对于使用 Django 制作的 Web 应用程序,是一种将所有可以是 http 的访问更改为 https 的设置方法,最好使用nginx这样的服务端应用来支持。
同样常规的 http 方法对于 Django 同样也是支持的。
用于将网址访问的链接 http 转换成 https。
# SECURITY安全设置 - 支持http时建议开启
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
SECURE_SSL_REDIRECT = True # 将所有非SSL请求永久重定向到SSL
SESSION_COOKIE_SECURE = True # 仅通过https传输cookie
CSRF_COOKIE_SECURE = True # 仅通过https传输cookie
SECURE_HSTS_INCLUDE_SUBDOMAINS = True # 严格要求使用https协议传输
SECURE_HSTS_PRELOAD = True # HSTS为
SECURE_HSTS_SECONDS = 60
SECURE_CONTENT_TYPE_NOSNIFF = True # 防止浏览器猜测资产的内容类型
设置可接收的请求主体最大的体积,以字节为单位。超过限制则抛出 SuspiciousOperation 异常。
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440 # 2.5 MB
可通过GET或POST接收的最大参数数量。
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
HttpResponse响应对象的默认字符集。
DEFAULT_CHARSET = 'utf-8'
需要CommonMiddleware中间件支持,代表用户代理字符串的已编译正则表达式对象列表,不允许用户在系统范围内访问任何页面。
DISALLOWED_USER_AGENTS = []
DISALLOWED_USER_AGENTS = [
re.compile(r'^\s$|^#39;), # 不允许空Headers浏览器
re.compile(r'.*PhantomJS.*') # 不允许无头浏览器
]
SCRIPT_NAME 任何HTTP请求中环境变量的值,一般配合 Nginx 使用。
FORCE_SCRIPT_NAME = None
Nginx.conf ,用Nginx的rewrite,实现向内传递时去除SCRIPT_NAME。
location ~ ^/home/ {
rewrite /home/(.*) /$1 break;
proxy_pass http://127.0.0.1:8000;
...
}
settings.py
FORCE_SCRIPT_NAME = '/home'
调试IP地址列表。
INTERNAL_IPS = []
INTERNAL_IPS = ['127.0.0.1', ]
在Setting.py中配置中间件,默认固定不需要修改。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
用于签名Cookie和其他数据的后端交互,默认固定不需要修改。
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
是否 X-Forwarded-Host 优先于 Host 标头使用标头。
USE_X_FORWARDED_HOST = False # 源请求头优先,默认
USE_X_FORWARDED_HOST = True # 访问服务器请求头优先
是否 X-Forwarded-Port 优先于 SERVER_PORT META 变量使用标头。
USE_X_FORWARDED_PORT = False # 源请求端口优先,默认
USE_X_FORWARDED_PORT= True # 访问服务器请求端口优先
Django内置服务器(例如runserver)将使用的 WSGI 应用程序对象的完整 Python 路径用于配置Nginx使用,默认固定不需要修改。
WSGI_APPLICATION = None
一个字典,指定用于在每个应用程序中找到迁移模块的软件包,migrations文件。
MIGRATION_MODULES = {}
对内容进行消毒,去掉敏感符号。
SECURE_BROWSER_XSS_FILTER = False
阻止浏览器自动推断内容类型。
SECURE_CONTENT_TYPE_NOSNIFF = True # 防止浏览器猜测资产的内容类型
将指令 SecurityMiddleware 添加 includeSubDomains 到HTTP Strict Transport Security。设置 True 严格要求使用 https 协议传输,所有子域完全使用HTTPS,否则你的站点仍旧有可能由于子域的不安全连接而受到攻击。
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SecurityMiddleware 添加 preload 到 HTTP Strict Transport Security,默认固定不需要修改
SECURE_HSTS_PRELOAD = False
SecurityMiddleware 设置会在所有尚未使用的 HTTP 严格响应上设置 HTTP Strict Transport Security。在不安全链接指定时间内拒绝使用不安全(HTTP)的方式连接到你的域名。
SECURE_HSTS_SECONDS = 0
SECURE_HSTS_SECONDS = 3600
请求的HTTP标头/值组合的元组,SECURITY安全设置。
SECURE_PROXY_SSL_HEADER = None
# SECURITY安全设置,支持http时开启
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
URL路径与此列表中的正则表达式匹配,则该请求将不会重定向到HTTPS,默认固定不需要修改
SECURE_REDIRECT_EXEMPT = []
将所有尚未将其设置为所有提供的值SecurityMiddleware的引用策略标头设置为提供的值,默认固定不需要修改。
SECURE_REFERRER_POLICY = None
SSL重定向都将定向到该主机,而不是最初请求的主机。
SECURE_SSL_HOST = None
SECURE_SSL_HOST = '127.0.0.1'
设置为True,则将所有非HTTPS请求重定向到HTTPS(与匹配中列出的正则表达式的URL除外 )。
SECURE_SSL_REDIRECT = False
SECURE_SSL_REDIRECT = True # 将所有非SSL请求永久重定向到SSL
留言与评论(共有 0 条评论) “” |