如何检查我的网站目前是否可以防范csrf?

时间:2014-04-11 03:47:44

标签: django csrf

我正在开发一个dJango网站并按照教程保护它免受CSRF的侵害,我做了一些事情并且不确定它现在是否写入安装,我怎样才能看到或检查它?

2 个答案:

答案 0 :(得分:1)

docs开始,为您的观点启用CSRF保护,请按以下步骤操作:

  1. 将中间件'django.middleware.csrf.CsrfViewMiddleware'添加到 settings.py 中的中间件类列表MIDDLEWARE_CLASSES。 (它应该出现在假设已经处理了CSRF攻击的任何视图中间件之前。)

  2. 在使用 POST 表单的任何模板中,如果表单用于内部网址,请在元素内使用csrf_token标记,例如:

    <form action="." method="post">{% csrf_token %}
    
  3. 在相应的视图函数中,确保正在使用'django.core.context_processors.csrf'上下文处理器。

  4. 按照这些步骤检查是否正确包含CSRF令牌。

    默认情况下,如果传入请求未通过CsrfViewMiddleware执行的检查,则会向用户发送'403 Forbidden'响应。这通常只有在存在真正的跨站点请求伪造时才会出现,或者由于编程错误而导致POSTF表单中未包含CSRF令牌时。

    有关详细信息,请参阅Docs

答案 1 :(得分:1)

检查settings.py中的MIDDLEWARE_CLASSES元组是否包含此

'django.middleware.csrf.CsrfViewMiddleware',

如果在元组中存在,则安装csrf。

有些人喜欢这样:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)