2010-06-04 5 views
17

Que se passe-t-il si un utilisateur consulte mon fichier JavaScript, copie le contenu d'une fonction et envoie une requête à mon serveur à l'aide d'AJAX? Et y a-t-il un moyen de protéger correctement contre cela?Sécurité des appels AJAX

Répondre

15

La façon de protéger contre cela n'est pas différente de la façon dont vous avez protégé toute demande Web. Vous faites en sorte que votre site nécessite une certaine forme d'authentification (c'est-à-dire que les utilisateurs doivent se connecter) et ne fait rien si la requête n'est pas correctement authentifiée. En règle générale, lorsque vous effectuez une requête AJAX, les cookies sont également envoyés avec la demande. Vous devriez donc pouvoir utiliser la même méthode d'authentification que celle utilisée pour vos demandes régulières avec vos requêtes AJAX.

+1

Ahh a du sens. Je ne savais simplement pas si les navigateurs avaient une sorte de protection inter-domaines quelconque. Merci bud. –

+0

le navigateur ne permet pas xmlhttprequest d'un autre serveur/domaine. Cependant, si vous autorisez les requêtes json-p, cela pourrait arriver, aussi quelqu'un pourrait usurper le navigateur, traiter les demandes d'ajax comme les autres, comme mentionné. – Tracker1

9

Comme pour codeka, il n'y a aucun moyen d'empêcher quelqu'un d'élaborer sa propre requête Ajax qui est identique à celle que vous avez dans votre requête Javascript. La protection inter-domaines ne vous protégera pas forcément, car ils peuvent, s'ils le souhaitent, taper le Javascript dans la barre d'adresse lorsqu'ils se trouvent sur une page de votre site. La seule protection dont vous disposez est de valider les entrées et les paramètres fournis par la requête Ajax côté serveur. Limitez chaque script de réponse PHP ou Python ou autre à une tâche très spécifique et vérifiez l'entrée du côté serveur. Si quelque chose ne va pas, répondez avec une erreur. En bref, il n'y a aucun moyen d'empêcher quelqu'un d'envoyer la demande, mais vous pouvez l'empêcher de faire quelque chose que vous ne voulez pas qu'il fasse sur votre serveur.

+4

Cela signifie-t-il que l'on ne pourrait jamais créer une architecture CRUD sécurisée * et * généralisée utilisant AJAX? – dclowd9901

0

En supposant que vous avez besoin d'une certaine forme d'authentification:

Je suppose que vous pouvez maintenir la session de base de données pour valider si la demande provient d'un véritable utilisateur forgé. Utilisez des cookies cryptés pour stocker l'ID de session et renvoyez l'ID de session de cookie à la base de données pour valider l'utilisateur.

Questions connexes