2011-11-12 52 views
2

我最近的Django项目我使用mako模板。Mako csrf_token喜欢在Django模板

关于Cross Site Request Forgery CSRF。

在django模板中有标记{% csrf_token %}来防止黑客入侵。

mako模板怎么样?是否有csrf_token的任何模拟或有另一种保护机制?

谢谢!

回答

1

some sample code at Django Snippets看起来要做到这一点,虽然从评论来看,你可能需要摆弄一下。如果遇到问题,您基本上需要确保您复制了the Django stock CSRF tag(点击链接,从第87行开始)。

+0

难道你不知道 - 也许鲭不需要这样的动作???实际上,我在mako文档中找不到有关安全性的任何信息...... –

+2

Mako是一种模板语言,CSRF停止的安全问题与Mako与Django股票模板语言与Jinja或任何其他语言无关模板语言,你可能会选择。 –

3

就在今天我遇到了同样的问题(这就是为什么我最终在这里)。至少我发现了一个解决方案,我想要做的是通过HTML表单将一些POST数据传递给另一个视图。那就是:

  1. 从你的第一个观点,得到了CSRF令牌,并将其添加到您的(马可)背景:

    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 }" /> 
    

来源:Cross Site Request Forgery protection (Django 1.5 Docs)