OVH Cloud OVH Cloud

Un CMS de news

15 réponses
Avatar
Thief13
Bonjour à tous !

Voilà, je viens de commencer le développement d'un CMS de News en PHP.

"Encore un CMS !" Diront certain...
En fait, si je me suis lancé là dedans, c'est parce que je n'ai rien
trouvé qui correspondait à ce que je cherchais : c.a.d. un petit CMS de
news léger que je pourrais facilement indégrer dans un autre CMS ou
simplement dans une page web.

Je l'ai mis sous la licence CeCILL ("l'équivalent" Français de la GPL),
donc vous pouvez vous servir, et/ou participer au projet !

http://newscms.kiou.net

Excusez moi si je n'ais pas posté dans le bon groupe, j'ai regardé ce
qui existait, et il m'a semblé que celui-là était le plus pertinent.

10 réponses

1 2
Avatar
ftc
Bonjour à tous !

Voilà, je viens de commencer le développement d'un CMS de News en PHP.

"Encore un CMS !" Diront certain...
En fait, si je me suis lancé là dedans, c'est parce que je n'ai rien
trouvé qui correspondait à ce que je cherchais : c.a.d. un petit CMS de
news léger que je pourrais facilement indégrer dans un autre CMS ou
simplement dans une page web.

Je l'ai mis sous la licence CeCILL ("l'équivalent" Français de la GPL),
donc vous pouvez vous servir, et/ou participer au projet !

http://newscms.kiou.net

Excusez moi si je n'ais pas posté dans le bon groupe, j'ai regardé ce
qui existait, et il m'a semblé que celui-là était le plus pertinent.


Salut,

Si je peux me permettre quelques commentaires.

- tu sépares le code métier de la présentation, c'est bien, mais
pourquoi alors mettre du HTML dans ton fichier index.php

- niveau sécurité, c'est pas top : injection SQL, XSS dans tous les sens
( addslashes ne protège pas des injections SQL, htmlentities ne protège
pas des XSS )

- plutôt que d'écrire mysql_fetch_array( $rs, MYSQL_ASSOC ), je préfère
mysql_fetch_assoc( $rs )

- tu utilises des résultats directement sans même tester le retour
$ligne = mysql_fetch_array(mysql_query($sql_sltIdNews, $link),
MYSQL_ASSOC), c'est une vrai horreur ce code

- plutôt que d'utiliser des variables globales pour stocker le résultats
de tes fonctions, il serait plus judicieux d'utiliser le retour de la
fonction ou un paramètre passé par référence.

Bref, encore un peu de boulot. Bon courage.

Petite remarque concernant la licence, CeCILL n'est pas du tout
équivalente à la GPL, il me semble même avoir vu qu'elles était
incompatible.

Avatar
John GALLET
Bonsoir,

( addslashes ne protège pas des injections SQL,
Pas de celles sur les entiers en effet.


htmlentities ne protège pas des XSS )
Sachant qu'il transforme < et > en &lgt; et &gt; aurais-tu un contre

exemple ? Sur une xss dans un navigateur s'entend.

JG

Avatar
Reno
Pour htmlentities, il faut bien faire attention au charset utilisé.
Exemple:

header('Content-Type: text/html; charset=UTF-7');
$string = "<script>alert('XSS');</script>";
$string = mb_convert_encoding($string, 'UTF-7');
echo htmlentities($string);

source: http://shiflett.org/archive/178
Avatar
Thief13
Bonsoir,

Bonsoir

( addslashes ne protège pas des injections SQL,
Pas de celles sur les entiers en effet.


Je ne m'y connais pas très bien dans tout ça, serrait-il possible

d'avoir plus de précision ? Et surtout de savoir comment m'en prémunir ?

htmlentities ne protège pas des XSS )
Sachant qu'il transforme < et > en &lgt; et &gt; aurais-tu un contre

exemple ? Sur une xss dans un navigateur s'entend.

En effet, je serais moi aussi curieux de savoir comment faire.est

surtout, de savoir comment l'éviter !
JG


Merci d'avance !

Kiou


Avatar
ftc
Bonsoir,

( addslashes ne protège pas des injections SQL,
Pas de celles sur les entiers en effet.



addslashes ne filtre que les ' pas les autres caractères dangereux, il
peut même agir au contraire de ce que l'on croit ( cf problème avec
certains encodages de caractères acceptant un caractère se terminant par
0xbf5c )


htmlentities ne protège pas des XSS )
Sachant qu'il transforme < et > en &lgt; et &gt; aurais-tu un contre

exemple ? Sur une xss dans un navigateur s'entend.


La fameuse faille liée aux caractères encodés en utf-7 ( jeu de
caractères non pris en charge par htmlentities ).

Un petit code pour s'en assurer:
<?php

header('Content-Type: text/html; charset=UTF-7');

$string = "<script>alert('XSS');</script>";
$string = mb_convert_encoding($string, 'UTF-7');

echo htmlentities($string);

?>


Avatar
Thief13

Salut,

Salut !

Si je peux me permettre quelques commentaires.

- tu sépares le code métier de la présentation, c'est bien, mais
pourquoi alors mettre du HTML dans ton fichier index.php

- niveau sécurité, c'est pas top : injection SQL, XSS dans tous les sens
( addslashes ne protège pas des injections SQL, htmlentities ne protège
pas des XSS )

Je sais bien, d'ailleur j'averti de cela. Ce n'est qu'une version alpha,

et il n'y à qu'une après midi de travail, c'est du vite fait. Mais le
résultat me semblais sympa, et je pense que ça vaut le coup de continuer
à le développer...

- plutôt que d'écrire mysql_fetch_array( $rs, MYSQL_ASSOC ), je préfère
mysql_fetch_assoc( $rs )

Pas de problème, je vais y réfléchir !


- tu utilises des résultats directement sans même tester le retour
$ligne = mysql_fetch_array(mysql_query($sql_sltIdNews, $link),
MYSQL_ASSOC), c'est une vrai horreur ce code

Désolé, encore une fois, c'est vraiment un truc fait à la va vite sur un

coin de table. Si tu souhaite m'aider à l'améliorer, n'hésite pas à me
dire tout ce qui ne te convient pas et à me proposer éventuellement de
modification. C'est un logiciel libre après tout !
- plutôt que d'utiliser des variables globales pour stocker le résultats
de tes fonctions, il serait plus judicieux d'utiliser le retour de la
fonction ou un paramètre passé par référence.

Je vais éventuellement voir ça pour la prochaine version, pas de problème !

Bref, encore un peu de boulot. Bon courage.

Merci ! Mais si tu veux participer, n'hésite pas !

Petite remarque concernant la licence, CeCILL n'est pas du tout
équivalente à la GPL, il me semble même avoir vu qu'elles était
incompatible.
Désolé, mais c'est complètement faut : la licence CeCILL à été développé

avec l'aide de la FSF notamment, et elle est entièrement compatible avec
la GPL. c.f. : article 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
(http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html)

En tout cas, merci beaucoup pour tes commentaires constructif !

Kiou

Avatar
Florian Sinatra
*Thief13* @ 18/02/2006 09:54 :
[...]
Je ne m'y connais pas très bien dans tout ça, serrait-il possible
d'avoir plus de précision ? Et surtout de savoir comment m'en prémunir ?

[...]

En effet, je serais moi aussi curieux de savoir comment faire.est
surtout, de savoir comment l'éviter !


Une bible (merci à John Gallet): http://www.saphirtech.com/securite.html

Avatar
ftc
Bonsoir,

Bonsoir

( addslashes ne protège pas des injections SQL,
Pas de celles sur les entiers en effet.


Je ne m'y connais pas très bien dans tout ça, serrait-il possible

d'avoir plus de précision ? Et surtout de savoir comment m'en prémunir ?


Deux choses :
1) quand tu attend un entier ou un flottant, tu t'assures que c'est bien
ce que tu reçois et tu en profites pour faire la conversion.

if( ctype_digit( (string) $_POST['un_entier'] ) ) {
$un_entier = (int) $_POST['un_entier'];
$sql = 'SELECT * FROM table WHERE id='.$id;
}

bien sûr, il ne faut pas mettre ce code à chaque fois, mais mettre dans
une fonction du type:

function getInt( $value ) {
if( ctype_digit( ( string )$value ) ) {
return (int)$value;
}
else {
return false;
}
}

2) Il faut toujours utiliser la fonction d'échappement fournie par ton
SGBD qui prend en compte les autres caractères dangereux ( spécifiques à
ton SGBD ) et s'occupe aussi de faire les conversions de charset

$sql = "SELECT * FROM table WHERE nom='".mysql_real_escape_string(
$value )."'";



htmlentities ne protège pas des XSS )
Sachant qu'il transforme < et > en &lgt; et &gt; aurais-tu un contre

exemple ? Sur une xss dans un navigateur s'entend.

En effet, je serais moi aussi curieux de savoir comment faire.est

surtout, de savoir comment l'éviter !


Voir les autres posts



Avatar
ftc

Petite remarque concernant la licence, CeCILL n'est pas du tout
équivalente à la GPL, il me semble même avoir vu qu'elles était
incompatible.
Désolé, mais c'est complètement faut : la licence CeCILL à été développé

avec l'aide de la FSF notamment, et elle est entièrement compatible avec
la GPL. c.f. : article 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
(http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html)


http://www.cecill.info/placer.fr.html#emprunt

"Pour pouvoir placer votre logiciel sous CeCILL, il est nécessaire que
les licences de ces emprunts ne rentrent pas en conflit avec CeCILL,
c'est à dire qu'elles soient compatibles avec CeCILL. Sont compatibles
avec CeCILL les licences compatibles avec la GNU GPL (que l'on peut
trouver sur cette page de la FSF), *à l'exception de la GNU GPL
elle-même*. "

CQFD


Avatar
Thief13

Petite remarque concernant la licence, CeCILL n'est pas du tout
équivalente à la GPL, il me semble même avoir vu qu'elles était
incompatible.
Désolé, mais c'est complètement faut : la licence CeCILL à été développé

avec l'aide de la FSF notamment, et elle est entièrement compatible avec
la GPL. c.f. : article 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
(http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html)


http://www.cecill.info/placer.fr.html#emprunt

"Pour pouvoir placer votre logiciel sous CeCILL, il est nécessaire que
les licences de ces emprunts ne rentrent pas en conflit avec CeCILL,
c'est à dire qu'elles soient compatibles avec CeCILL. Sont compatibles
avec CeCILL les licences compatibles avec la GNU GPL (que l'on peut
trouver sur cette page de la FSF), *à l'exception de la GNU GPL
elle-même*. "

CQFD


" Le Licencié peut inclure un code soumis aux dispositions d'une des
versions de la licence GNU GPL dans le Logiciel modifié ou non et
distribuer l'ensemble sous les conditions de la même version de la
licence GNU GPL.

Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis
aux dispositions d'une des versions de la licence GNU GPL et distribuer
l'ensemble sous les conditions de la même version de la licence GNU GPL."

Bon, soit je suis vraiment bête et je ne comprends rien, soit y'a
quelque chose qui cloche... si CeCILL n'est pas compatible avec GNU GPL,
comment ce fait-il que l'on peut sans problème inclure du CeCILL dans du
GNU GPL ???



1 2