codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
27 févr. 2008 à 10:37
jadu
Messages postés217Date d'inscriptionmercredi 26 juillet 2006StatutMembreDernière intervention16 août 2018
-
3 mars 2008 à 10:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
jadu
Messages postés217Date d'inscriptionmercredi 26 juillet 2006StatutMembreDernière intervention16 août 2018 3 mars 2008 à 10:01
FREE accepte le PHP5 sans soucis !
Il n'y a rien à demander !
Il faut et il suffit d'utiliser PHP5 sur toutes ses pages PHP !
Sinon, le code a des côtés intéressants pour un ex-débutant ;-))
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 févr. 2008 à 15:51
ok
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 28 févr. 2008 à 15:10
@Mldvb : "Quand a Coucou, quand tu dit « j'adore ta source... » je suppose que c'est encore ironique." => Toi tu va t'attirer les foudres de Zeus !
Ce qu'il à dit était autant voir PLUS constructif que mes commentaires, surtout au niveau du hashage et de l'encodage puisque c'est lui qui à apporté l'idée. Il à donc plus de mérite sur ce point.
mldvb
Messages postés8Date d'inscriptionjeudi 15 décembre 2005StatutMembreDernière intervention 1 mars 2019 28 févr. 2008 à 15:00
Permettez moi de re-situer le contexte, il s’agit d’un site dont les accès sont limités a l’environnement familial. Ce site n’est même pas référencé.
Dans un premier temps j’avais même prévu des mots de passe en clair. Alors les prérogatives de la Cnil ou du ministère de la défense n’étaient pas vraiment mon problème.
Ceci dit je remercie Codefalse pour ces remarques un peu plus constructives et j’essaierai d’aller voir comment fonctionne ce hash dont je n’avais jamais entendu parler (et oui je débute …)
Quand a Coucou, quand tu dit « j'adore ta source... » je suppose que c’est encore ironique.
Merci tout de même de vous pencher sur mon code.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 févr. 2008 à 14:53
c'est une invitation au troll ?
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 28 févr. 2008 à 14:46
oui, en effet, d'un point de vue éthique, le mot de passe doit etre hashé (voir crypté et hashé pour les paranos).
Par ailleur, préferer un hash sha1 au hash md5.
Pour le ministere de la défense, c'est ptete 128 en effet :) D'ailleur ca m'énerve un peu ca aussi, je comprends le "oulala on craint que vos conversations soient à but pédophiles, terroristes, etc" mais du coup où est la vie privée ? Je n'ai rien à caché, je veux juste un peu d'intimité. Savoir que ce que je dit, il n'y a que moi et le destinataire qui le savent.
Qui te dit que tes meilleures projets que t'a parlé avec ton pote par mail, M$ n'en est pas informé par un contrat illicite avec le ministère de la défense ? :p Ca parrait absure mais quand t'y pense, ca m'étonnerait meme pas ! :p
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 févr. 2008 à 13:53
si mais ca c'est le ministere de la defense qui s'en occupe (et c'est 128 d'ailleur je crois)
la cnil, c'est pour les acces aux informations privees, et vu la faille XSS de ce site, deja, il met tout sauf le password a notre disposition, de plus, l'auteur de la source a acces lui aux passwords (puisqu'il a la clef AES) et ca, c'est mal : de tres nombreux utilisateurs utilisent le meme password sur de nombreux sites, il est donc illegal de stoquer l'information... ce password doit-etre irrecuperable : donc hashe.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 28 févr. 2008 à 13:49
@coucou : peut-etre que je me trompe mais on ne doit prévenir les supérieurs que si la clef est supérieur à 256bits non ?
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 28 févr. 2008 à 13:48
free supporte le php5, il suffit de lui mettre une directive dans un fichier htaccess
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 févr. 2008 à 13:47
j'adore ta source...
extract($_POST); // je vous renvoie à la doc de cette fonction
je t'informe que quand je te demandais ce qu'elle faisait, c'etait ironique, j'aurais pu dire "mais qu'est-ce-qu'elle fout la ?"
AES_ENCRYPT("'.$pass1.'","clecrypt")
ca me choque perso, j'ai toujours entendu que la cnil voulait qu'on hashe nos passwords et pas qu'on les crypte...
mldvb
Messages postés8Date d'inscriptionjeudi 15 décembre 2005StatutMembreDernière intervention 1 mars 2019 28 févr. 2008 à 13:35
Je comprend un peu mieux, et effectivement il peut y avoir un souci de ce coté.
Mais même si on récupère le mot de passe, il faudrait connaitre le code de cryptage AES (qui n'est pas le même sur mon site que celui du Kit)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 févr. 2008 à 13:23
euh.... correction :
$nomsg = '0 UNION SELECT login, password FROM users'
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 févr. 2008 à 13:22
$sql = 'SELECT * FROM messagerie WHERE `no` = '.$nomsg;
t'as une requete du genre, $nomsg est fixe par l'utilisateur, il n'a qu'a faire :
$nomsg = UNION SELECT login, password FROM users
mldvb
Messages postés8Date d'inscriptionjeudi 15 décembre 2005StatutMembreDernière intervention 1 mars 2019 28 févr. 2008 à 10:52
Merci a tous pour vos commentaires.
Encore une fois je suis débutant en php et accepte toutes critiques.
ce site a été crée pour un usage perso, et si je l'ai posté c'est uniquement car il me semblait suffisant pour débuter et n'as pas forcement vocation a être utilisé tel quel.
C'est pourquoi je n'envisage pas une évolution possible de la base de donnée (comme le précisait Codefalse)
Il est certain qu'il faudrait améliorer la partie sécurité.
Pour "extract()", je me suis inspiré du site "phpdebutant" et je n'ai pas vu qu'il pouvait y avoir des problème de sécurité ou de performance.
De meme pour "error reporting(0)" j'essairai, a l'occasion de corriger.
Coucou747 tu parle de possibilité de récupération du mot de passe Admin, qui est codé dans une table User, lors de l'affichage d'un message dans la table messagerie, j'avoue que je ne comprend pas la subtilité.
Quand a la version de PHP, j'ai développé ce site pour qu'il fonctionne chez mon hebergeur (Free) qui est en PHP 4.4.3
cs_yoman64
Messages postés592Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 4 décembre 2008 28 févr. 2008 à 04:03
Outre les perfs consommé inutilement comme le signale codefalse, Coucou a totalement raison, c'est pas pour rien que register_globals est à Off par défaut depuis php 4.2 pour des raisons de sécurités...
Coucou démontre très clairement les failles lié à ce que tu fais,mais si tu crois toujours pas, alors peut être croieras tu l'équipe php qui elle même déconseille fortement register_globals (parce que ce que tu fais reviens presqu'à la même chose...)
Pour ce qui est de remplacer les fichiers index avec un exit par un .htaccess, je suis d'accord sur le fait qu'un htaccess est mieu , mais pour des questions de portabilité je crois qu'il est bon de garder un fichier index.html quand même, après tout apache n'est pas le SEUL serveur web au monde hein :P
Sinon il serait bon de respecter les standards (x)html (eh oui un cms devrait respecter les standards...) et de passer à php5, à l'aube du php6 le php4 fait très vieu jeux.... mais bon....
Ton projet est interessant, et je te souhaite bonne chance :)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 27 févr. 2008 à 22:48
extract($_POST); permet a l'internaute d'interragir directement avec les variables definies ou non, ce qui peut provoquer des failles si ton site est mal concu. Utiliser $_POST directement limite la porte du $_POST a la ou il est utilise...
et si tu veux parler securite :
# $nomsg = $_POST['lect'];
# if (isset($_POST['lecture'])) {
# affich_msg($nomsg);
ici, tu appelles ta fonction sans verification de ce que tu lui envoies
# function affich_msg($nomsg){# $sql 'SELECT * FROM messagerie WHERE `no` '.$nomsg;
ici tu peux faire une XSS SQL a base de UNION SELECT (avec ce genre de choses, on peut reussir a recuperer un mot de passe admin)
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 27 févr. 2008 à 22:42
Utiliser extract demande au serveur php plus de travail, allouer plus de mémoire pour des variables qui, au final, t'auront fait gagner quelques minutes de ton temps et fera ramer ton serveur inutilement.
Dushaine
Messages postés5Date d'inscriptionsamedi 29 novembre 2003StatutMembreDernière intervention27 février 2008 27 févr. 2008 à 22:33
rien a voir... ca n'influence en rien la sécurité
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 27 févr. 2008 à 22:23
tu sacrifies un confort d'ecriture a une securite...
Dushaine
Messages postés5Date d'inscriptionsamedi 29 novembre 2003StatutMembreDernière intervention27 février 2008 27 févr. 2008 à 22:10
extract($_POST); // ca sert a quoi ?
>> ca sert tout simplement a ne pas devoir a chaque fois taper $_POST['var1'] $_POST['var2'], ... apres extraction tu mets simplement $var1, $ var2, ...
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 27 févr. 2008 à 13:46
Merci pour la mise à jour du zip, c'est mieux comme ca :)
Au lieu de mettre un index avec un exit ('INTERDIT');
Tu devrait mettre un htaccess, ca fait plus sérieux ! :p
Ensuite tu te cantonne à une base de donnée en mysql. Prévoit une base de donnée adaptable, que ce soit aussi bien pour du mysql, pgsql, et autre. Surtout étant donné la vocation qu'à ton projet. Un "Kit de création de site internet" ne peux se cantonner qu'à un type de bdd. Je te demande pas de faire le reste en opérationnel, mais de prevoir le fait que ...
De plus, des systemes de ce genre sont maintenant codés en Orienté objet. Pas parce que ca fait plus roxor, coderz killerz (lol) mais tout simplement car, quand c'est bien structuré, tu a la puissance de l'évolutivité et de la pérénité à moindre cout et avec une extrême rapidité !
Prends exemple sur tous les frameworks actuels, qu'ils soient pour php4 (déprécié) ou php5, tu aura toujours des classes. Il y a une raison a cela !
Evite l'utilisation de global, c'est un peu comme mettre du 777 (droits d'acces en écriture, lecture et execution pour tout le monde) sur tes fichiers secrets (mot de passes et companie)
Courage !
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 27 févr. 2008 à 12:28
quelques remarques
Header("location: test_session.php");
c'est header('Location: url_absolue'); normalement
on trouve des balises center
on trouve
, mais parfois aussi des
pour le php :
if (mysql_num_rows($reqJ) > 0) {
$tabl_Journal= array();
while ($tabl_Journal = mysql_fetch_assoc($reqJ)) {
si ton if n'a pas de else, alors le if ne sert a rien...
error_reporting(0);
moi ca me choque, meme en production...
extract($_POST); // ca sert a quoi ?
sinon, tu fais plein de echos quand tu pourrais en faire un seul, c'est domage
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 27 févr. 2008 à 10:37
pourrais tu éviter de mettre des zip dans des zip histoire que l'on puisse commenter ton code sans télécharger le fichier.
Je sais, ca fait un peu feignant mais en meme temps ... hein ! ... :p
3 mars 2008 à 10:01
Il n'y a rien à demander !
Il faut et il suffit d'utiliser PHP5 sur toutes ses pages PHP !
Sinon, le code a des côtés intéressants pour un ex-débutant ;-))
28 févr. 2008 à 15:51
28 févr. 2008 à 15:10
Ce qu'il à dit était autant voir PLUS constructif que mes commentaires, surtout au niveau du hashage et de l'encodage puisque c'est lui qui à apporté l'idée. Il à donc plus de mérite sur ce point.
28 févr. 2008 à 15:00
Dans un premier temps j’avais même prévu des mots de passe en clair. Alors les prérogatives de la Cnil ou du ministère de la défense n’étaient pas vraiment mon problème.
Ceci dit je remercie Codefalse pour ces remarques un peu plus constructives et j’essaierai d’aller voir comment fonctionne ce hash dont je n’avais jamais entendu parler (et oui je débute …)
Quand a Coucou, quand tu dit « j'adore ta source... » je suppose que c’est encore ironique.
Merci tout de même de vous pencher sur mon code.
28 févr. 2008 à 14:53
28 févr. 2008 à 14:46
Par ailleur, préferer un hash sha1 au hash md5.
Pour le ministere de la défense, c'est ptete 128 en effet :) D'ailleur ca m'énerve un peu ca aussi, je comprends le "oulala on craint que vos conversations soient à but pédophiles, terroristes, etc" mais du coup où est la vie privée ? Je n'ai rien à caché, je veux juste un peu d'intimité. Savoir que ce que je dit, il n'y a que moi et le destinataire qui le savent.
Qui te dit que tes meilleures projets que t'a parlé avec ton pote par mail, M$ n'en est pas informé par un contrat illicite avec le ministère de la défense ? :p Ca parrait absure mais quand t'y pense, ca m'étonnerait meme pas ! :p
28 févr. 2008 à 13:53
la cnil, c'est pour les acces aux informations privees, et vu la faille XSS de ce site, deja, il met tout sauf le password a notre disposition, de plus, l'auteur de la source a acces lui aux passwords (puisqu'il a la clef AES) et ca, c'est mal : de tres nombreux utilisateurs utilisent le meme password sur de nombreux sites, il est donc illegal de stoquer l'information... ce password doit-etre irrecuperable : donc hashe.
28 févr. 2008 à 13:49
28 févr. 2008 à 13:48
28 févr. 2008 à 13:47
extract($_POST); // je vous renvoie à la doc de cette fonction
je t'informe que quand je te demandais ce qu'elle faisait, c'etait ironique, j'aurais pu dire "mais qu'est-ce-qu'elle fout la ?"
AES_ENCRYPT("'.$pass1.'","clecrypt")
ca me choque perso, j'ai toujours entendu que la cnil voulait qu'on hashe nos passwords et pas qu'on les crypte...
28 févr. 2008 à 13:35
Mais même si on récupère le mot de passe, il faudrait connaitre le code de cryptage AES (qui n'est pas le même sur mon site que celui du Kit)
28 févr. 2008 à 13:23
$nomsg = '0 UNION SELECT login, password FROM users'
28 févr. 2008 à 13:22
t'as une requete du genre, $nomsg est fixe par l'utilisateur, il n'a qu'a faire :
$nomsg = UNION SELECT login, password FROM users
28 févr. 2008 à 10:52
Encore une fois je suis débutant en php et accepte toutes critiques.
ce site a été crée pour un usage perso, et si je l'ai posté c'est uniquement car il me semblait suffisant pour débuter et n'as pas forcement vocation a être utilisé tel quel.
C'est pourquoi je n'envisage pas une évolution possible de la base de donnée (comme le précisait Codefalse)
Il est certain qu'il faudrait améliorer la partie sécurité.
Pour "extract()", je me suis inspiré du site "phpdebutant" et je n'ai pas vu qu'il pouvait y avoir des problème de sécurité ou de performance.
De meme pour "error reporting(0)" j'essairai, a l'occasion de corriger.
Coucou747 tu parle de possibilité de récupération du mot de passe Admin, qui est codé dans une table User, lors de l'affichage d'un message dans la table messagerie, j'avoue que je ne comprend pas la subtilité.
Quand a la version de PHP, j'ai développé ce site pour qu'il fonctionne chez mon hebergeur (Free) qui est en PHP 4.4.3
28 févr. 2008 à 04:03
Coucou démontre très clairement les failles lié à ce que tu fais,mais si tu crois toujours pas, alors peut être croieras tu l'équipe php qui elle même déconseille fortement register_globals (parce que ce que tu fais reviens presqu'à la même chose...)
Plus d'infos: http://ca.php.net/register_globals
Sans parler que sur la doc d'extract ils disent justement de ne pas l'utiliser sur des données passé par l'utilisateur ($_GET,etc)
Infos: http://ca.php.net/manual/en/function.extract.php
Pour ce qui est de remplacer les fichiers index avec un exit par un .htaccess, je suis d'accord sur le fait qu'un htaccess est mieu , mais pour des questions de portabilité je crois qu'il est bon de garder un fichier index.html quand même, après tout apache n'est pas le SEUL serveur web au monde hein :P
Sinon il serait bon de respecter les standards (x)html (eh oui un cms devrait respecter les standards...) et de passer à php5, à l'aube du php6 le php4 fait très vieu jeux.... mais bon....
Ton projet est interessant, et je te souhaite bonne chance :)
27 févr. 2008 à 22:48
et si tu veux parler securite :
# $nomsg = $_POST['lect'];
# if (isset($_POST['lecture'])) {
# affich_msg($nomsg);
ici, tu appelles ta fonction sans verification de ce que tu lui envoies
# function affich_msg($nomsg){# $sql 'SELECT * FROM messagerie WHERE `no` '.$nomsg;
ici tu peux faire une XSS SQL a base de UNION SELECT (avec ce genre de choses, on peut reussir a recuperer un mot de passe admin)
27 févr. 2008 à 22:42
27 févr. 2008 à 22:33
27 févr. 2008 à 22:23
27 févr. 2008 à 22:10
>> ca sert tout simplement a ne pas devoir a chaque fois taper $_POST['var1'] $_POST['var2'], ... apres extraction tu mets simplement $var1, $ var2, ...
27 févr. 2008 à 13:46
Au lieu de mettre un index avec un exit ('INTERDIT');
Tu devrait mettre un htaccess, ca fait plus sérieux ! :p
Ensuite tu te cantonne à une base de donnée en mysql. Prévoit une base de donnée adaptable, que ce soit aussi bien pour du mysql, pgsql, et autre. Surtout étant donné la vocation qu'à ton projet. Un "Kit de création de site internet" ne peux se cantonner qu'à un type de bdd. Je te demande pas de faire le reste en opérationnel, mais de prevoir le fait que ...
De plus, des systemes de ce genre sont maintenant codés en Orienté objet. Pas parce que ca fait plus roxor, coderz killerz (lol) mais tout simplement car, quand c'est bien structuré, tu a la puissance de l'évolutivité et de la pérénité à moindre cout et avec une extrême rapidité !
Prends exemple sur tous les frameworks actuels, qu'ils soient pour php4 (déprécié) ou php5, tu aura toujours des classes. Il y a une raison a cela !
Evite l'utilisation de global, c'est un peu comme mettre du 777 (droits d'acces en écriture, lecture et execution pour tout le monde) sur tes fichiers secrets (mot de passes et companie)
Courage !
27 févr. 2008 à 12:28
Header("location: test_session.php");
c'est header('Location: url_absolue'); normalement
ton html (ou xhtml ?) genere est completement faux :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
on trouve des balises center
on trouve
, mais parfois aussi des
pour le php :
if (mysql_num_rows($reqJ) > 0) {
$tabl_Journal= array();
while ($tabl_Journal = mysql_fetch_assoc($reqJ)) {
si ton if n'a pas de else, alors le if ne sert a rien...
error_reporting(0);
moi ca me choque, meme en production...
extract($_POST); // ca sert a quoi ?
sinon, tu fais plein de echos quand tu pourrais en faire un seul, c'est domage
27 févr. 2008 à 10:37
Je sais, ca fait un peu feignant mais en meme temps ... hein ! ... :p