quinta-feira, 28 de abril de 2011

Migrando para versão 1.3 - parte 3 - o CSRF

O CSRF é uma melhoria que vem desde da versão 1.2.X, impedindo que POSTs externos enviem informações para seu site. Ele protege os forms através de uma chave critptografada que é validada no envio do form.

Para migrar seus forms ( contato / cadastro / login / etc) para suportar o CSRF é necessário alguns passos:


  1. Certifique-se que os middlewares do crsf estejam no settings, confome a parte 1 deste tutorial (http://djangoweb.blogspot.com/2011/04/migrando-para-versao-13-parte-1-o.html)

  2. Coloque no seu form, a tag para geração do token do CSRF:
    {% csrf_token %}

  3. Na view que receberá o POST, valide o token enviado pelo form da seguinte forma:
    from django.core.context_processors import csrf
    c = {}
    c.update(csrf(request))


  4. Caso precise excluir uma view dessa validação, como quando recebe-se o post de terceiros, por exemplo, basta utilizar o decorator @csrf_exempt:

    from django.views.decorators.csrf import csrf_exempt
    @csrf_exempt
    def sua_view_aqui(request):

         
    pass


Nota: para requisições ajax, o token também deverá ser passado.

hasta!

Nenhum comentário:

Postar um comentário