2011-10-05 5 views
0

Question simple: Comment détecter si les données de formulaire publiées sur mon site sont effectuées via cURL et non via la page de formulaire du site.comment vérifier si la publication est effectuée en utilisant cURL

(Ex) utilisateur exécute boucle -H "Host: http://mysite" pour toute forme POST "données post" http://mysite dans le site.

Puisqu'il est possible de définir Referer et User Agent, je crois qu'ils ne sont pas considérés comme des critères de filtrage. Toutes les suggestions ou solutions sont les bienvenues.

Merci & À votre santé !!

+2

Impossible de le faire? – Patrick87

Répondre

0

Ajoutez un jeton à votre formulaire que vous générez dynamiquement et stockez-le dans la session des utilisateurs. Lorsque l'utilisateur soumet un formulaire, vérifiez que le jeton du formulaire correspond au jeton présent dans la session. Ce jeton doit changer à chaque fois que le formulaire est rendu. Cela permettra au formulaire d'être soumis une seule fois.

Si l'utilisateur soumet un formulaire avec un jeton obsolète, demandez-lui de le redéposer avec un message d'erreur indiquant que le formulaire était obsolète et qu'il doit recommencer l'opération.

Curl peut émuler un navigateur afin que rien ne soit efficace à 100%, mais cela couvre la plupart des cas.

Vous pouvez également avoir ce champ de jeton rempli par JavaScript puisque curl ne l'exécute pas.

+0

kudos ... mais dans le cas où c'est une forme que n'importe quel utilisateur anonyme peut entrer ou un formulaire d'inscription ne pense pas que je serai de la chance..et une approche de la reconnaissance humaine comme CAPTCHA n'est pas un idéal pour moi comme je ne peut pas prendre la décision ou même suggérer d'en ajouter une ... – optimusprime619

+1

Les sessions fonctionnent très bien avec les utilisateurs anonymes, vous n'avez pas besoin de les authentifier pour que cette approche fonctionne. – BeWarned

0

Je suppose qu'il faudrait vérifier pour voir si le bouton d'envoi de formulaire a été déclenché.

+0

bon ... mais je pourrais déclencher une fausse alarme en désactivant le javascript et en remplissant le formulaire ne sera pas? – optimusprime619

+0

Si l'on utilise Javascript pour vérifier le formulaire, alors oui. On pourrait aussi avoir le bouton Soumettre le formulaire ajouter "& clicked = true" aux données du formulaire. – Romoku

0

Je ne suis pas sûr de ce que votre problème de sécurité est, comme vous ne nous dites pas. En ce qui concerne le serveur web, cURL est en fait juste un autre navigateur web; il se trouve que c'est un qui est contrôlé par des arguments de ligne de commande et non une souris.

Peut-être que vous êtes préoccupé par vous protéger de Cross-Site Request Forgery et devrait examiner les OWASP CSRF Prevention Cheat Sheet

+0

désolé de ma question étant abstraite..il y a un de mes amis travaille au printemps mvc et cette question a été soulevée disant qu'il était possible de boucler le coup de curl et d'inonder la DB pour la page d'inscription .... je ne serais jamais pensé à ce sujet et il pourrait être possible dans mon code PHP ... donc senti la curiosité de poser des questions à son sujet .. – optimusprime619

+1

Flood/DoS protection est un concept entièrement différent de la détection des clients. Théoriquement, tout client peut tenter de vous DoS. La détection de cURL ne vous aidera pas beaucoup ici. Peut-être regarder quelque chose comme apache httpd-guardian (ou similaire pour votre serveur web choisi) qui va bloquer les adresses faisant trop de demandes dans un certain laps de temps http://apache-tools.cvs.sourceforge.net/apache-tools/ – Cheekysoft

+0

true ... mais dans mon cas c'était un peu trop spécifique ... peut-être qu'il est temps de clore cette question en devenant très ambigu ... merci à tous pour les réponses et pour avoir un aperçu approfondi sur ce sujet et j'espère que ce fil aidera/éduque quelqu'un d'autre autant que cela m'a fait .. – optimusprime619

Questions connexes