Je suis probablement un noob total ici, mais je ne suis toujours pas certain de ce qu'une attaque CSRF (Cross-Site Request Forgery) est exactement. Alors regardons trois situations ...Est-ce que je risque d'être victime d'attaques CSRF dans un formulaire POST qui ne nécessite pas que l'utilisateur soit connecté?
1) J'ai un formulaire POST que j'utilise pour éditer des données sur mon site. Je veux que ces données soient éditées seulement par les utilisateurs qui sont connectés.
2) J'ai un site, qui peut être utilisé par les utilisateurs qui sont connectés ainsi que les invités. Certaines parties du site sont réservées aux utilisateurs connectés, mais il existe également des formulaires POST pouvant être utilisés par tous les utilisateurs - anonymes et non (par exemple, un formulaire de contact standard). Le formulaire de contact devrait-il être protégé contre les attaques CSRF? 3) J'ai un site qui ne possède pas de système d'authentification (enfin, c'est peut-être irréaliste, alors disons qu'il a un site admin qui est séparé du reste et que la partie admin est correctement sauvegardée). La partie principale du site est uniquement utilisée par des utilisateurs anonymes. Les formulaires POST doivent-ils être protégés?
Dans le cas de 1), la réponse est clairement oui. Mais dans le cas de 2 et 3 je ne sais pas (et la différence entre 2 et 3 est-elle même significative?).
Merci - très utile :) (Même si je n'avais pas spécifiquement demandé, j'ai trouvé la comparaison à XSS très utile :)) Si je comprends bien alors je pourrais toujours vouloir utiliser CSRF dans quelque chose comme un formulaire de contact dans la prévention spambot, non? –
Un jeton basé sur une requête et/ou un captcha est la meilleure approche. On ne sait pas quel est le langage de programmation de votre webapp. J'ai vérifié l'historique de vos questions et je suppose que vous ciblez Python. Vous pouvez alors trouver http://captchas.net utile. Le site contient un exemple Python. – BalusC
Merci, bonnes réponses :) Je pense que je sais plus ou moins comment l'implémenter dans ma technologie de prédilection (le framework Django). Était juste pas clair sur la nature de l'attaque elle-même. –