Problème de sécurité entre AJAX et PHP
ajaxPowaa
Messages postés
6
Statut
Membre
-
ajaxPowaa Messages postés 6 Statut Membre -
ajaxPowaa Messages postés 6 Statut Membre -
Salut à tous,
je programme en php depuis que je suis tout petit et je suis en train de bosser sur l'interactivité avec les utilisateurs via l'AJAX. J'ai vu moultes scripts javascript/php permettant de reconnaitre des users par login/pwd sans devoir rafraichire la page
le hic : ces scripts sont hackable sans aucun problème. il suffit de faire une boucle javascript et de soumettre tous les mots de passes possibles et imaginables pour un login à la page PHP de test et de collecter le résultat pour trouver lequel est correct. typiquement, voici un code qui le permet sans aucun problème :
on voit donc bien que depuis nimporte quel ordinateur connecté à internet, il est possible de lancer ce type de boucle qui va tester tous les possibilités (ici tous les logins possibles).
Une solution est de intégrer un compteur d'essai pour chaque login dans la base de donnée, et de renvoyer d'office "mauvais login" quand on a dépassé un certain nombre d'essai ... mais je trouve cette méthode barbare. N'y a t-il pas une solution pour tester la provenance de l'appel ?
d'avance merci pour vos réponses
Raf
je programme en php depuis que je suis tout petit et je suis en train de bosser sur l'interactivité avec les utilisateurs via l'AJAX. J'ai vu moultes scripts javascript/php permettant de reconnaitre des users par login/pwd sans devoir rafraichire la page
le hic : ces scripts sont hackable sans aucun problème. il suffit de faire une boucle javascript et de soumettre tous les mots de passes possibles et imaginables pour un login à la page PHP de test et de collecter le résultat pour trouver lequel est correct. typiquement, voici un code qui le permet sans aucun problème :
var loginAtester=""; while (true){ // tant que le résultat du précédent login n'est pas arrivé, on attend while(XHR!=null && loginAtester!=""){ setTimeout(true,5); } XHR=getXMLHTTP(); // fonction qui crée un XHR if(XHR) { try{ // on fait appel à la page php qui permet de tester le login XHR.open("GET","http:/www.monsite.com/testLogin.php?id="+loginAtester,true); XHR.onreadystatechange=function() { if(XHR.readyState==4 && XHR.status == 200) { // si le mot de passe est bon on l'affiche if (XHR.responseText="bon mot de passe") alert(loginAtester+"est le bon login"); // on réinitialise le XHR XHR=null; } } // envoi de la requête XHR.send(null); nextLogin(); // on passe au login suivant à tester }catch(exc) { alert(exc); } } }
on voit donc bien que depuis nimporte quel ordinateur connecté à internet, il est possible de lancer ce type de boucle qui va tester tous les possibilités (ici tous les logins possibles).
Une solution est de intégrer un compteur d'essai pour chaque login dans la base de donnée, et de renvoyer d'office "mauvais login" quand on a dépassé un certain nombre d'essai ... mais je trouve cette méthode barbare. N'y a t-il pas une solution pour tester la provenance de l'appel ?
d'avance merci pour vos réponses
Raf
A voir également:
- Problème de sécurité entre AJAX et PHP
- Question de sécurité - Guide
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Mode securite - Guide
- Clé de sécurité windows 10 gratuit - Guide
- Easy php - Télécharger - Divers Web & Internet
2 réponses
je viens juste de me rendre compte que par l'AJAX ce genre d'attaque est facilitée puisqu'il ne faut plus avoir accès au serveur directement pour écrire ces attaques, mais que c'est le serveur qui vient à l'utilisateur pour lui donner les info
c'est un concept que j'ai du mal à accepter ... je me demande comment les sites pro font pour parer à ce problème.
sur daylimotion par exemple (pour ne pas le citer), le formulaire de login est en ajax 100% ... quid de la fiabilité du système ?
c'est un concept que j'ai du mal à accepter ... je me demande comment les sites pro font pour parer à ce problème.
sur daylimotion par exemple (pour ne pas le citer), le formulaire de login est en ajax 100% ... quid de la fiabilité du système ?
ce que je veux, c'est être certain que chaque fois que ma page php est appelée, c'est à partir du site en question, et non pas à partir d'une page de hacking que nimporte qui (qui active javascript sur son navigateur) peut écrire ... la preuve, c'est ce que j'ai fais dans mon premier message