sécurité anti injection c'est bon?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : sécurité anti injection c'est bon?

par Invité » 09 juin 2007, 22:29

ok merci pour ton aide

++

par lux » 09 juin 2007, 18:11

Je viens de lire la doc.
Ben même avec mon bon niveau d'anglais, j'ai pas tout pigé, c'est trop technique.

Je suppose qu'il faudrait même définir les 2, je sais pas. Si tu fais un SET NAMES avec la première requête, si j'ai bien suivi, les suivantes auront le même charset de connexion. Après je garantis rien, donc pour l'instant j'ai pas de solution, je fais juste un SET NAMES une fois dans la première requête c'est tout.

Après faudrait demander à qqn qui s'y connait. On a pas vraiment de réponse claire comment se protéger contre les injections SQL .... ça me chagrine un peu :cry:

par yuuzhantar » 09 juin 2007, 13:06

salut

je suis moi aussi en UTF-8 pour mes bases de données
la remarque de lux m'interresse et j'ai été voir la documentation qu'il a donné

mais je n'ai pas trop compris la différence entre SET_NAMES et SET CHARACTER SET

et laquelle me conseille tu ?

dois-je écrire le bout de code une fois après la connexion et il restera le temps de l'exécution du script ou dois-je le réécrire avant chaque requête ?

merci

par lux » 08 juin 2007, 16:37

Ça me semble ce qu'il y a de mieux à faire oui. Maintenant faudrait que j'apprenne à m'en servir :P

par Klomac » 08 juin 2007, 16:21

Avec les requêtes préparées, l'échappement est fait automatiquement par la base de données en fonction du type du paramètre envoyé. Ainsi tu n'as aucun échappement à faire. Ca permet d'éviter un éventuel oublie de te part.

par lux » 08 juin 2007, 14:26

J'ai regardé comment fonctionnaient les requêtes préparés. A quel niveau cela présente-t'il un accroissement de la sécurité ?

par Klomac » 08 juin 2007, 13:59

L'idéal est effectivement d'utiliser les requêtes préparées, qui sont vraiment sécurisées. Pour des petites requêtes rapides c'est pas forcément le plus "light" mais si vous ne faites pas d'usine à gaz ça devrait pas poser de problème ;)

par lux » 08 juin 2007, 13:03

J'ai lu ça sur les mysql_real_escape_strings :

http://ilia.ws/archives/103-mysql_real_ ... ments.html

Lisez aussi les commentaires en bas.



Donc en substance si je resume bien, mysql_real_escape_strings est sans danger mais en fonction du charset utilisé. Moi qui bosse en UTF-8, et que donc d'après les commentaire le problème ne se pose pas avec UTF-8, il faut juste penser à ajouter : SET NAMES 'UTF-8' dans la requete pour être 100% sur.

Le danger est-il réel ou pas, et la méthode de sécurisation est-elle meilleure ?

par ouiouioui » 08 juin 2007, 11:12

d'accord merci.

par jed » 06 juin 2007, 13:15

Oui comme tu fais dans la dernière partie. Avec ça je pense pas que l'appel aux magic quotes soit indispensable.

par ouiouioui » 06 juin 2007, 12:34

Pour ma part je sécurise mes requêtes avec la fonction mysql_real_escape_string(), cela s'avère suffisant...
comme je fait ( voir code jusquau bout grâce au scroll ;) )?
ou tu utilise une autre méthode?

merci :)

par jed » 06 juin 2007, 09:16

Pour ma part je sécurise mes requêtes avec la fonction mysql_real_escape_string(), cela s'avère suffisant...

sécurité anti injection c'est bon?

par ouiouioui » 05 juin 2007, 18:01

Bonjour, je suis novice en ce qui concerne la sécurité, j'ai lu des centaines de pages sur le sujet, je crée un mini site avec compte et lors de l'enregistement aprés soumission d'un formulaire voici ma requête, est ce que c'est sécurisé?:

Code : Tout sélectionner

$mysql est ma connection mysql function donnees_mysql($requete) { global $mysql; $result = mysql_query($requete, $mysql) or die('Erreur requête - ' . mysql_error()); return $result; } function clean($user) { if(get_magic_quotes_gpc()) { if(ini_get('magic_quotes_sybase')) { $user = str_replace("''", "'", $user); } else { $user = stripslashes($user); } } return $user; } $pass = md5($_POST['pass']); //je md5 le pass la car je le compare à une autre var $user = clean($_POST['user']); $query = sprintf("INSERT INTO " . $db['prefix'] . "_users (`user`, `pass`, `mail`) VALUES ('%s', '$pass', '%s')", mysql_real_escape_string($user, $mysql), mysql_real_escape_string($_POST['mail'], $mysql)); $requete_mysql = donnees_mysql($query, $mysql);
merci d'avance a ceux qui m'aiderons, car ainsi je peux créer des user '' ' text ' mais je ne sais pas faire d'injection sql donc je sais pas trop comment tester la sécurité :(