【django】2-3 (django配置) HTTP和会话配置、认证和安全配置

文章目录

  • 6 HTTP配置
  • 7 会话配置
  • 8 认证和授权配置
  • 9 安全配置
    • 9.1 XFrameOptionsMiddleware提供的点击劫持保护配置
    • 9.2 SecurityMiddleware提供的安全配置
    • 9.3 CSRF保护配置


创建django项目后,会自动生成初始的项目文件如下:

manage.py           # 管理django项目的命令行工具
django_pro/         # 项目的python包
    __init__.py		# 表示当前文件夹是一个python包
	settings.py     # 项目的配置文件
	urls.py         # 项目的URL声明
	asgi.py         # 项目运行在兼容ASGI的web服务器上的入口
	wsgi.py         # 项目运行在兼容WSGI的web服务器上的入口

settings.py文件包含了项目的基础配置。以下是HTTP、会话、认证和安全相关的配置参数。

settings.py可选的全部配置见:django配置


6 HTTP配置

  • DATA_UPLOAD_MAX_MEMORY_SIZE
    请求体的最大字节数。默认2.5MB。超过会引发异常。

  • DATA_UPLOAD_MAX_NUMBER_FIELDS
    通过GET或POST接收的参数的最大数量。默认为1000,超过会引发异常。

  • DATA_UPLOAD_MAX_NUMBER_FILES
    通过POST接收的最大文件数。默认100。

  • DEFAULT_CHARSET
    未手动指定MIME类型时,HttpResponse使用的默认字符集。默认为'utf-8'

  • DISALLOWED_USER_AGENTS
    正则表达式对象列表,表示不允许访问任何页面的User-Agent字符串。

  • FORCE_SCRIPT_NAME
    HTTP请求中“SCRIPT_NAME”环境变量的值。默认为None。

  • SIGNING_BACKEND
    用于签署cookie和其他数据的后端。默认'django.core.signing.TimestampSigner'

  • USE_X_FORWARDED_HOST
    是否使用X-Forwarded-Host头,默认False。仅在使用设置该头的代理时才启用。

  • USE_X_FORWARDED_PORT
    是否使用X-Forwarded-Port头,默认False。仅在使用设置该头的代理时才启用。

  • WSGI_APPLICATION
    django内置服务器如runserver将使用的WSGI应用对象的完整Python路径。
    默认为None,使用由django.core.wsgi.get_wsgi_application()获取的值。


7 会话配置

  • SESSION_COOKIE_SECURE
    是否仅通过HTTPS传输会话Cookie。默认False。

  • SESSION_COOKIE_AGE
    会话cookie的寿命,默认1209600秒,2周。

  • SESSION_COOKIE_DOMAIN
    用于会话cookie的域。

  • SESSION_COOKIE_HTTPONLY
    是否对会话cookie使用HttpOnly标志。默认为True,客户端的JS无法访问会话cookie。

  • SESSION_COOKIE_NAME
    用于会话的cookie名称。

  • SESSION_COOKIE_PATH
    会话cookie上设置的路径。该配置适合在同主机多项目时分隔各自的会话。

  • SESSION_COOKIE_SAMESITE
    会话cookie上的SameSite值。这个标志可以防止cookie在跨站请求中被发送。

  • SESSION_EXPIRE_AT_BROWSER_CLOSE
    是否在用户关闭浏览器时结束会话。默认False。

  • SESSION_SAVE_EVERY_REQUEST
    是否在每次请求时保存会话数据。默认False,只有被修改时才保存会话。

  • SESSION_SERIALIZER
    会话数据的序列化器的完整导入路径。
    默认值:'django.contrib.sessions.serializers.JSONSerializer'

  • SESSION_ENGINE
    会话引擎。控制会话数据的存储位置。
    可选值:

    • django.contrib.sessions.backends.db 会话存储于数据库中
    • django.contrib.sessions.backends.file 会话存储在文件
    • django.contrib.sessions.backends.cache 基于缓存的会话
    • django.contrib.sessions.backends.cached_db 先从缓存读取会话,如果没有就从数据库读取
    • django.contrib.sessions.backends.signed_cookies 会话基于cookie
  • SESSION_CACHE_ALIAS
    使用基于缓存的会话时,选择需要使用的缓存。默认'default'

  • SESSION_FILE_PATH
    在会话存储在文件时,指定会话存储的目录。


8 认证和授权配置

  • AUTHENTICATION_BACKENDS
    认证用户时,使用的认证后端类的列表。

    AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
    
  • LOGIN_URL
    在使用login_required()装饰器、LoginRequiredMixinAccessMixin或安装LoginRequiredMiddleware时,请求重定向到登录的URL。
    默认'/accounts/profile/'

  • LOGIN_REDIRECT_URL
    登录后请求被重定向的URL。

  • LOGOUT_REDIRECT_URL
    注销后的重定向URL。

  • AUTH_USER_MODEL
    用来表示用户的模型。

  • PASSWORD_RESET_TIMEOUT
    密码重置链接的有效秒数。默认259200秒,3天。

  • PASSWORD_HASHERS
    存储密码时使用的哈希算法列表。

  • AUTH_PASSWORD_VALIDATORS
    用于检查用户密码强度的验证器列表。


9 安全配置

  • SECRET_KEY 用于提供加密签名的密钥,需要保密。
    django项目在创建时会自动创建一个随机生成的密钥。
    它会被用于会话、消息、密码的加密。
  • SECRET_KEY_FALLBACKS
    回退密钥列表。

9.1 XFrameOptionsMiddleware提供的点击劫持保护配置

点击劫持指恶意网站在自身页面上隐藏另一个网站的元素欺骗用户点击的行为。

  • X_FRAME_OPTIONS
    XFrameOptionsMiddleware中间件使用的X-Frame-Options的默认值。默认为'DENY'
    X_FRAME_OPTIONS = "SAMEORIGIN"
    

9.2 SecurityMiddleware提供的安全配置

  • SECURE_CONTENT_TYPE_NOSNIFF
    默认False,启用时SecurityMiddleware中间件会在所有响应设置X-Content-Type-Options: nosniff头。

  • SECURE_CROSS_ORIGIN_OPENER_POLICY
    默认'same-origin'SecurityMiddleware中间件会在响应上设置Cross-Origin-Opener-Policy头。
    一些浏览器可以根据这个头防止跨源攻击。

  • SECURE_HSTS_INCLUDE_SUBDOMAINS
    SecurityMiddleware中间件会在HTTP的Strict-Transport-Security头添加includeSubDomins指令。
    该指令会使浏览器拒绝通过不安全的连接连接到你的子域。

  • SECURE_HSTS_PRELOAD
    启用时SecurityMiddleware中间件会在HTTP的Strict-Transport-Security头添加preload指令。

  • SECURE_HSTS_SECONDS
    默认为0。设置为非0整数时,SECURE_HSTS_PRELOADSECURE_HSTS_INCLUDE_SUBDOMAINS配置才会生效。

  • SECURE_REFERRER_POLICY
    SecurityMiddleware中间件会在响应上设置:ref:头。

  • SECURE_REDIRECT_EXEMPT
    默认为空列表。可以使用正则表达式指定不会被重定向到HTTPS的请求。

  • SECURE_SSL_REDIRECT
    是否将所有HTTP请求重定向时转为HTTPS。默认False。

  • SECURE_SSL_HOST
    指定SSL重定向指向的主机。

  • SECURE_PROXY_SSL_HEADER
    格式为包含HTTP头部字段和值的元组。可以控制请求对象的is_secure()方法的行为。

    is_secure()默认会通过请求的url是否包含https://来判断请求是否安全。
    当django应用处于代理服务器后面时,原始请求即使用了HTTPS,代理使用非HTTPS连接时,is_secure()就会返回False。原始请求使用非HTTP连接时,代理用了HTTPS,is_secure()就返回True。
    可以设置一个自定义的头来标记原始请求是否是通过HTTPS进来的,然后设置SECURE_PROXY_SSL_HEADER参数。

    # 来自代理的请求的X-Forwarded-Proto头值为https、
    # 或协议列表的最左侧的值为https时,就认为是安全的
    SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
    

9.3 CSRF保护配置

  • CSRF_COOKIE_SECURE
    是否仅通过HTTPS传输CSRF cookie。
  • CSRF_COOKIE_DOMAIN
    设置CSRF cookie时使用的域。
    用于把跨子域请求排除在跨站请求伪造保护之外。
  • CSRF_COOKIE_AGE
    CSRF cookie的寿命。默认值3144960秒,约1年。
    过期时间长是为了避免用户从浏览器缓存中加载数据时出现问题。
    设置为None时,会使用基于会话的CSRF cookie。这时cookie存在内存中而不是持久性存储。
  • CSRF_COOKIE_HTTPONLY
    是否对CSRF cookie使用HttpOnly标志。
    默认False。启用时客户端的JS无法访问CSRF cookie。
  • CSRF_COOKIE_NAME
    用于CSRF认证令牌的cookie的名称。默认值'csrftoken'
  • CSRF_COOKIE_PATH
    在CSRF cookie上设置的路径。默认值'/'
    如果多个django项目在同一个机器上启动时,这个设置可以使每个项目只能看到自己的CSRF cookie。
  • CSRF_COOKIE_SAMESITE
    CSRF cookie上SameSite标志的值。可用来防止在跨站请求中发送cookie。
  • CSRF_FAILURE_VIEW
    请求被CSRF保护拒绝时,使用的视图的点分隔路径。
  • CSRF_HEADER_NAME
    用于CSRF认证的请求头的名称。默认'HTTP_X_CSRFTOKEN'
  • CSRF_TRUSTED_ORIGINS
    允许CSRF信任的来源。
  • CSRF_USE_SESSIONS
    启用时会把CSRF令牌存储在用户会话,而不是cookie中。默认False。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值