我最近的Django项目我使用的是mako模板。
关于Cross Site Request Forgery CSRF。
在django模板中,标记{% csrf_token %}
可以防止黑客攻击。
mako模板怎么样?有csrf_token
的模拟还是有另一种保护机制???
谢谢!
答案 0 :(得分:3)
我今天遇到了同样的问题(这就是为什么我最终来到这里)。我找到了一个解决方案,至少是我想要做的,它通过HTML表单将一些POST数据传递给另一个视图。这是:
从您的第一个视图中,获取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)
yourtemplate.html的表单必须有一个名为“csrfmiddlewaretoken”的字段,其值为CSRF令牌,我们将其置于上下文中作为“csrftoken”。如:
<input type="hidden" name="csrfmiddlewaretoken" value="${ csrftoken }" />
答案 1 :(得分:1)
有some sample code at Django Snippets看起来这样做,虽然根据评论判断,你可能需要稍微改变一下。如果您遇到问题,基本上要确保复制the Django stock CSRF tag(点击链接,从第87行开始)。