[PHP-MySQL] Sécurité lors des requêtes SQL avec script de commentaires

Sécurité lors des requêtes SQL avec script de commentaires [PHP-MySQL] - PHP - Programmation

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 ?

Reply

Marsh Posté le 20-04-2002 à 00:00:16   

Reply

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...

Reply

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é ?


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

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.

Reply

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.

Reply

Marsh Posté le 20-04-2002 à 19:54:54    

ba suffit de faire un preg_replace qui change < en < et > en >

Reply

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) . "';)"

Reply

Marsh Posté le 20-04-2002 à 22:34:47    

Bon j'ai fait :

Code :
  1. $dcomment = stripslashes($HTTP_POST_VARS['comment']);
  2. $dcomment = addslashes(htmlspecialchars($dcomment, ENT_QUOTES));


Avec ça j'ai pas encore réussi à m'auto-hacker.

Reply

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.

Reply

Marsh Posté le 21-04-2002 à 00:31:43    

Dost67 a écrit a écrit :

Bon j'ai fait :

Code :
  1. $dcomment = stripslashes($HTTP_POST_VARS['comment']);
  2. $dcomment = addslashes(htmlspecialchars($dcomment, ENT_QUOTES));


Avec ça j'ai pas encore réussi à m'auto-hacker.  



Il sert à quoi le htmlspecialchars :??:  
Normalement, cette fonction sert uniquement à générer une chaîne de caractère HTML.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed