2010-12-01 29 views
5

Je teste la protection CSRF sur mon site et j'ai remarqué quelque chose d'inattendu.La balise de protection CSRF {% csrf_token%} est-elle toujours nécessaire dans Django 1.2?

J'ai supprimé {% csrf_token %} de mon formulaire et la soumission fonctionne toujours. Je ne pouvais pas comprendre pourquoi. J'ai ensuite regardé la source et j'ai réalisé que le jeton était toujours là juste à côté de l'élément <form>. J'ai changé l'identifiant du formulaire pour m'assurer qu'il mettait définitivement à jour la source et c'était mais l'entrée cachée est toujours là. Je utilise Django 1.2. Est-ce que {% csrf_token %} est toujours nécessaire?

Vive

Rich

+1

Après plus d'investigation, il apparaît que le {% csrf_token%} est toujours inséré si le formulaire a la méthode 'post' et non si ce n'est pas le cas. Django très malin. Protection automatique – Rich

+0

affichez cette réponse et acceptez-la (vous devrez peut-être attendre 24 heures avant de pouvoir accepter votre propre réponse). –

Répondre

4

Après une enquête plus approfondie, il apparaît le {% csrf_token %} est toujours inséré si la forme a méthode post et non si elle ne fonctionne pas. Protection automatique très intelligente de Django.

+1

Je crois que cela ne se produit que si vous ajoutez 'django.middleware.csrf.CsrfResponseMiddleware' à vos classes de middleware. Ce n'est plus recommandé. Voir http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#legacy-method –