来自Cloudflare的SSL的CSRF django nginx

锡兰铁路

背景

我正在尝试配置Django应用程序以与cloudflare提供的ssl一起使用。我的配置与此答案大致相同,并且遵循相同的解决方案。

问题:

这已经使我丧命了好几个星期(请帮助!),因为我不是网络/安全专家,只需要一种解决方案就可以避免我费劲,但又可以保护站点安全。

我目前遇到CSRF问题,其中https://www.domain.co.ukhttps://domain.co.uk不匹配

设定档

Settings.py

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
USE_X_FORWARDED_HOST = True

nginx:

server {

    listen 80 default_server;

    server_name domain.co.uk www.domain.co.uk;
    access_log off;

    location /static/ {
        alias /static/;
    }


    location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;
            add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';

            proxy_set_header X-Scheme $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            }
}

Cloudflare DNS:

A domain.co.uk  points to <ip> Automatic
CNAME www is an alias of domain.co.uk Automatic 

奖金

此外,我还拥有域名的.com,并且想知道如何最好地进行设置,使其也成为ssl。

法索托

您需要设置发送CSRF Coo​​kie的域。尝试设置CSRF_COOKIE_DOMAIN".domain.co.uk"CSRF_COOKIE_SECURETrue您的设置。

第四点值得一读https://docs.djangoproject.com/en/1.9/ref/csrf/#how-it-works

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章