|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : février 2006 Messages : 5 ![]() |
Bonjour,
Depuis peu, des gens pas très cools me font des injections sql par le biais de page de connexion sur mon serveur. J'ai lu la doc sur le cross site scripting mais je reste coincée au niveau de l'intégration de htmlspecialchars dans mon code. Au lieu de m'afficher le texte normal, il m'affiche tout ainsi que le nom des balises sur ma page !!! Au départ j'avais ce code là : Code :
Puis j'ai mis à jour.. Et maintenant mes input ne s'affichent plus en "graphique" html mais en texte !!! Et les autres balises pareil du genre <font face="verdana">Bonjour !</font> au lieu de juste "bonjour !" Je suis vraiment perdue Code :
|
||||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() |
Salut,
Je ne comprends pas trop le rapport entre ton problème d'injection SQL et le code que tu donnes. Pour les injections SQL, quand tu récupères des variables ( $_GET ou $_POST) tu peux faire Code :
$tavariable = addslashes( $_GET[ "ta variable" ] ); Code :
$tavariable = stripslashes( $tavariable ); Mickaël
__________________
MyFinder, explorateur de fichiers alternatif http://myfinder.fpc-france.com SimplyMirror, sauvegarde simple et efficace http://simplymirror.fpc-france.com |
|
|
00
|
|
|
#3 | ||
|
Membre actif
![]() Étudiant Inscription : avril 2007 Messages : 181 ![]() |
C'est quoi cette manie de toujours vouloir appliquer des stripslashes() sur les variables en sortie de la base de données ?!
J'ai du voir ça une bonne douzaine de fois au moins... Si les variables ont été correctement échappées avant insertion dans la BDD, alors aucun antislash ne doit être enregistré. Généralement les gens utilisent un addslahes() en plus d'avoir les magic_quotes_gpc activées, ce qui fait qu'il y a un double échappement : en effet les magic_quotes ajoutent automatiquement un autre addslashes(). Du les variables PHP se retrouvent avec 3 antislashs au lieu d'un seul et ça oblige à appliquer un stripslashes() en sortie... Si je rentre dans un formulaire (ou dans une variable dans l'URL) : "test" Avec les magic_quotes_gpc ça deviendra : \"test\" Et en plus le second addslashes() : \\\"test\\\" Absurde non ?! Quant à la fonction htmlspecialchars() ou htmlentities(), on l'utilise après enregistrement, et non avant insertion dans la BDD, sinon on enregistre plein de caractères supplémentaires pour rien... Autre chose encore : pour échapper les données, utilisez la fonction spécifique à votre BDD, et non addslashes(). Avec MySQL, il s'agit de mysql_real_escape_string(). Petit exemple avec un formulaire : Code "PHP :
Bon, pour en revenir au problème de sway, je doute que ta faille se trouve dans le morceau de code que tu nous a montré, en effet ce sont juste des chaînes de caractères que tu initialises toi même, elles ne contiennent aucun élément issu du navigateur du visiteur... Protège toutes tes données issues des $_POST, $_GET et $_COOKIE comme avec mon exemple ci-dessus (si tu utilises MySQL bien sûr) et tu devrais être bien protégé contre les injections SQL (Pense aussi à intval() pour tes variables contenant un nombre entier). |
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : février 2006 Messages : 5 ![]() |
En fait apparemment d'après notre administrateur réseaux, la hackeur passe par cette page là pour faire son cross site scripting et tout casser ! Donc je me demandais s'il ne passait pas sur le serveur en envoyant des commandes par le biais de la case input du mot de passe et du login...
Je ne comprends vraiment pas j'ai bien veillé à mettre $_GET ou $_POST mais je vais rajouter $tavariable = addslashes( $_GET[ "ta variable" ] ); En tout cas merci pour les réponses rapides !!!! |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : mai 2007 Messages : 131 ![]() |
Si il y a injection sql ou cross site scripting, ce n'est pas sur cette page, mais sur l'action page du login, si un hacker met des choses bizarres dans les champs id et password.
Un truc tout bête : contrôler la longueur des champs du formulaire. Si la longueur de l'id dans la bdd est 10, il ne faut pas accepter plus de 10 caractères. Idem pour le mot de passe. On peut aussi chercher des mots comme SELECT, INSERT, DELETE, =, " ", null, not ... le plus simple est de limiter les caractères autorisés à l'inscription et de contrôler ça au login ... mais bon, tout ça doit être dans la faq ... |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
http://a-pellegrini.developpez.com/t...tyle/#LIII.1.6
PDO c'est bien aussi pour gérer les acces en base de donnée. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com