Мако csrf_token как в шаблонах Django - PullRequest
2 голосов
/ 12 ноября 2011

В моем недавнем Django-проекте я использую шаблоны mako.

О подделке межсайтовых запросов CSRF.

В шаблонах django есть тег {% csrf_token %} для защиты от хакеров.

А как насчет шаблонов мако?Есть ли аналог csrf_token или есть другой механизм защиты ???

Спасибо!

Ответы [ 2 ]

3 голосов
/ 02 июля 2013

Я столкнулся с той же проблемой только сегодня (вот почему я оказался здесь). По крайней мере, я нашел решение для того, что я хотел сделать - передать некоторые данные POST в другое представление через HTML-форму. Вот оно:

  1. С первого взгляда получите токен CSRF и добавьте его в свой контекст (Mako):

    from djangomako.shortcuts import render_to_response as render  
    from django.core.context_processors import csrf
    
    def first_view(request):  
        """This view generates a form whose action is 'second_view'."""  
        context = { "csrftoken": csrf(request)["csrf_token"] }  
        return render("path/to/yourtemplate.html", context)  
    
  2. Форма yourtemplate.html должна иметь поле с именем «csrfmiddlewaretoken», значением которого является токен CSRF, который мы поместили в контекст как «csrftoken». Как в:

    <input type="hidden" name="csrfmiddlewaretoken" value="${ csrftoken }" />
    

Источник: Защита от подделки межсайтовых запросов (Django 1.5 Docs)

...