Xeon Posté 1 Juin 2005 Posté 1 Juin 2005 Bonjour, Je débute en PHP, et vois souvent revenir la question d'un problème de sécurité : quelqu'un pourrait envoyer un script via un formulaire dans une base de données. Mais je ne trouve rien qui indique les conséquences que cela pourrait avoir au juste. Quelqu'un pourrait-il m'explique cela ? D'avance merci
Light_at_the_end Posté 1 Juin 2005 Posté 1 Juin 2005 En réalité,( je crois que) la faille de sécurité dans les balises de formulaires est le fait que l'on peut écrire du code php dans les champs et après on peut faire un peu ce ke l'on veut : connaitre comment ta base de donnée est foutue, récupérer des constantes (voire les identifiants de connexion de ta base de donnée donc à peu pres tout te prendre etc...) Et la façon de le contrer est de rajouter : htmlentities au moment où tu récupères les informations de ton formulaire. Pour chaque champ tu appliques la fonction htmlentities, et personne ne pourra (je crois encore) exécuter un code php via ton formulaire
Boo2M0rs0 Posté 1 Juin 2005 Posté 1 Juin 2005 (modifié) Il y a un truc meurtrier assez connu comme faille qui arrivent: l'injection sql Par exemple on a une table 'utilisateur' qui contient 3 champs : 'id' , 'email' 'is_admin' Si on veut changer l'email de quelqu'un grâce à un forumulaire, il faudrait faire une requête de ce genre apres avoir recu le formulaire: $sql = mysql_query("UPDATE utilisateur SET `email` = '{$_GET['nouveau_mail']} WHERE id = $id"); Donc si l'utilisateur veut mettre foo_AT_bar.com (j'ai vu qu'on prenais souvent ce genre de mot pour les exemples) en nouvelle adresse, la requête va devenir: UPDATE utilisateur SET `email` = 'foo_AT_bar.com' Seulement que se passe t-il si on veut en nouvel email la chaine: ' , `is_admin` = '1 On a la commande sql qui fonctionnne: UPDATE utilisateur SET `email` = '' , `is_admin` = '1' N'importe qui en s'enregistrant sur un site peut devenir l'admin juste en changeant d'adresse ! Pour éviter cela, on utilise souvent la fonction addslashes() qui ajoute un caractère d'échappement devant tout les caractères à risques. Une option de php ( magic_quotes_gpc ) le fait aussi sur toute les données envoyés par l'utilisateur ( contenues dans $_GET , $_POST , $_COOKIE ). Le risque d'éxecuter du php envoyé par l'utilsateur existe surtout pour l'upload de fichier, donc il faut toujours vérifier que le fichier envoyé ne contient pas l'extension .php à la fin (ou alors toute autre extension qui permet l'execution de php sur ton serveur) avant de l'enregistrer. Si tu as des parties de sites où les utilisateurs peuvent réagir en postant des commentaires , bloquent aussi l'utilisation de l'html cette fois avec htmlentities(). Plus que le risque de faire crasher ton pc, ce sont plutot les visiteurs qui auront des problèmes, au mieux la page sera déformé avec un peu de javascript, au pire en se fesant voler leur identifiants. Bon il existe bien d'autres trucs. Bref, il faut toujours prendre le temps de "sécuriser" les données qui viennent de l'extérieur avant de s'en servir. Modifié 1 Juin 2005 par Boo2M0rs0
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant