Sil*_*ils 5 django ssl nginx csrf
我正在尝试配置Django应用程序以与cloudflare提供的ssl一起使用。我的配置与此答案大致相同,并且遵循相同的解决方案。
这已经杀死了我好几个星期(请帮忙!),因为我不是网络/安全人员,只需要一种解决方案就可以避免我费劲,但可以确保站点安全。
我目前遇到CSRF问题,其中https://www.domain.co.uk与https://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
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Cloudflare DNS:
A domain.co.uk points to <ip> Automatic
CNAME www is an alias of domain.co.uk Automatic
Run Code Online (Sandbox Code Playgroud)
此外,我还拥有域名的.com,并且想知道如何最好地进行设置,使其也成为ssl。
您需要设置发送 CSRF cookie 的域。尝试在您的设置中设置CSRF_COOKIE_DOMAIN为".domain.co.uk"和CSRF_COOKIE_SECUREto 。True
相关文档https://docs.djangoproject.com/en/4.1/ref/csrf/#how-it-works
| 归档时间: |
|
| 查看次数: |
1177 次 |
| 最近记录: |