Sécurité lors des requêtes SQL avec script de commentaires [PHP-MySQL] - PHP - Programmation
Marsh Posté le 20-04-2002 à 14:32:29
Up, ça m'intéresse aussi, j'ai un ptit systeme de news mais il est pas très folichon niveau sécurité.
Sinon fais bien attention de mettre le htmlspecialchars également en sortie, lorsque le serveur lira les infos de la table, car si par exemple un gugus s'amuse à mettre
<script>
while() {
window.open('trucbazar.com','','';
}
</script>
ça le fait pas trop. Enfin je dis ça parce que sur mon système de news, c'est pas un problème, les utilisateurs vont pas s'amuser à ça, mais avec un système de commentaires...
Marsh Posté le 20-04-2002 à 14:49:20
je suis assez étonné que qqch de ce style :
INSERT INTO commentaires VALUES ('', NOW('', 'INSERT INTO autretable VALUES ('tu t fait hacker !''
puisse marcher... tu as testé ?
Marsh Posté le 20-04-2002 à 16:08:59
z0rglub a écrit a écrit : je suis assez étonné que qqch de ce style : INSERT INTO commentaires VALUES ('', NOW('', 'INSERT INTO autretable VALUES ('tu t fait hacker !'' puisse marcher... tu as testé ? |
C'est parce que je me suis trompé, j'ai mis ' en trop à la fin. Ce que le hacker tape devrait donc donner :
INSERT INTO commentaires VALUES ('', NOW('', 'tu vas te faire hacker'; INSERT INTO autretable VALUES ('tu t fait hacker !'
Et là ça fonctionne et ça peut devenir dangereux si autretable c'est une avec des passwords et des logins.
Marsh Posté le 20-04-2002 à 16:12:14
HORNY-GRANDCORNU a écrit a écrit : <script> while() { window.open('trucbazar.com',' 039;,''; } </script> |
Pour ça j'ai pompé le code de PHPNuke !! Toutes mes pages PHP commence par vérifier qu'il n'y a pas de <script> ou de parenthèses dans l'URL.
Marsh Posté le 20-04-2002 à 19:54:54
ba suffit de faire un preg_replace qui change < en < et > en >
Marsh Posté le 20-04-2002 à 20:41:14
Dost67 a écrit a écrit : INSERT INTO commentaires VALUES ('', NOW('', '$comment' |
Même sans être hacké, faut éviter ca. Si l'utilisateur met des caractères un peu particulier comme ' ou autre, ca va faire planter ta requête.
Il faut protéger la chaîne :
"INSERT INTO commentaires VALUES ('', NOW('', '" . addslashes($comment) . "'"
Marsh Posté le 20-04-2002 à 22:34:47
Bon j'ai fait :
Code :
|
Avec ça j'ai pas encore réussi à m'auto-hacker.
Marsh Posté le 20-04-2002 à 22:35:49
Boris l'invincible a écrit a écrit : ba suffit de faire un preg_replace qui change < en < et > en > |
Oui enfin un htmlspecialchars ça fait tout en même temps.
Marsh Posté le 21-04-2002 à 00:31:43
Dost67 a écrit a écrit : Bon j'ai fait :
|
Il sert à quoi le htmlspecialchars
Normalement, cette fonction sert uniquement à générer une chaîne de caractère HTML.
Marsh Posté le 20-04-2002 à 00:00:16
Donc j'ai un script pour entrer des commentaires ! Ca se présente un peu comme ce forum (normal) avec des champs de texte où l'utilisateur entre ce qu'il veut mettre.
Ensuite la requête (simplifiée) :
INSERT INTO commentaires VALUES ('', NOW('', '$comment'
Le problème est dans la variable $comment (qui provient d'un textarea) car si l'utilisateur met
tu vas te faire hacker'; INSERT INTO autretable VALUES ('tu t fait hacker !'
eh bien je me suis fait hacker !
Donc j'ai utilisé le htmlspecialchars($comment, ENT_QUOTES) qui m'a permis de transformer les ' en leur code HTML. Avez-vous d'autres conseils SVP ?