Django安全配置(settings.py)详解
必须配置项
PASSWORD_HASHER
这个配置是在使用Django自带的密码加密函数的时候会使用的加密算法的列表.默认如下:
PASSWORD_HASHERS = (
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher',
)
默认使用第一个条目的加密算法,即PBKDF2算法.
所以在使用make_password,check_password,is_password_unable等密码加解密函数的时候,需要添加这个list在setting.py文件中,推荐使用默认配置的算法.
ADMINS
ADMINS是一个二元元组,记录开发人员的姓名和email,当DEBUG为False而views发生异常的时候发email通知这些开发人员.类如:
(('John', 'john@example.com'), ('Mary', 'mary@example.com'))
ALLOWED_HOSTS
ALLOWED_HOSTS是为了限定请求中的host值,以防止黑客构造包来发送请求.只有在列表中的host才能访问.强烈建议不要使用*通配符去配置,另外当DEBUG设置为False的时候必须配置这个配置.否则会抛出异常.配置模板如下:
ALLOWED_HOSTS = [
'.example.com', # Allow domain and subdomains
'.example.com.', # Also allow FQDN and subdomains
]
DEBUG
DEBUG配置为True的时候会暴露出一些出错信息或者配置信息以方便调试.但是在上线的时候应该将其关掉,防止配置信息或者敏感出错信息泄露.
DEBUG = False
INSTALLED_APPS
INSTALLED_APPS是一个一元数组.里面是应用中要加载的自带或者自己定制的app包路径列表.
INSTALLED_APPS = [
'anthology.apps.GypsyJazzConfig',
# ...
]
MANAGERS
和ADMINS类似,并且结构一样,当出现'broken link'的时候给manager发邮件.
MIDDLEWARE_CLASSES
web应用中需要加载的一些中间件列表.是一个一元数组.里面是django自带的或者定制的中间件包路径,需要注意顺序如下:
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',
'django.middleware.security.SecurityMiddleware',
)
TEMPLATE_DEBUG
同样是一个DEBUG开关,若为True,DEBUG信息在触发异常之后,会显示在网页上.上线之前必须修改成:
TEMPLATE_DEBUG = False
建议配置
DEBUG
DEBUG = False
防止配置信息和调试信息暴露
SESSION_COOKIE_SECURE
SESSION_COOKIE_SECURE = True
使得session cookie被标记上secure标记,从而只能传输在HTTPS下.
SESSION_COOKIE_HTTPONLY
SESSION_COOKIE_HTTPONLY = True
使得session cookie被标记上http only标记,从而只能被http协议读取,不能被Javascript读取
TEMPLATE_DEBUG
TEMPLATE_DEBUG = False
防止配置信息和debug信息通过view传出.
推荐的中间件
SessionMiddleware
配置作用:在应用中使用session
配置方法:
在MIDDLEWARE_CLASSES中加入:
django.contrib.sessions.middleware.SessionMiddleware
CsrfViewMiddleware
配置作用:在应用中添加CSRF token用来防范csrf攻击
配置方法:
在MIDDLEWARE_CLASSES中加入:
django.contrib.sessions.middleware.CsrfViewMiddleware
clickjacking.XFrameOptionsMiddleware
配置作用:在Http header中添加 X-Frame-Options 标志.防范Clickjacking
配置方法:
在MIDDLEWARE_CLASSES中加入:
django.middleware.clickjacking.XFrameOptionsMiddleware
推荐安装的APP
django_bleach
作用:过滤html字符串,返回合法的已经过滤的安全html字符串.
官方链接:https://bitbucket.org/ionata/django-bleach
文档:https://django-bleach.readthedocs.org/en/latest/
xframeoptions
作用:防范ClickJacking,作用和官方的XFrameOptionsMiddleware相似
官方链接:https://github.com/paulosman/django-xframeoptions
Django安全配置(settings.py)详解的更多相关文章
- 【5】Django项目配置settings.py详解
夫唯不争,故天下莫能与之争 --老子<道德经> 本节内容 1.项目配置文件settings.py介绍 2.数据库配置[MySQL] 3.创建模型对象并和数据库同步 4.python官方提供 ...
- django项目的配置文件settings.py详解
我们创建好了一个Python项目(mysite/)之后,需要在项目中添加模块应用(polls/),在模块应用中添加处理功能逻辑,如添加模块中的视图处理函数(polls.views.index()),这 ...
- Django路由配置之正则表达式详解
正则表达式详解 urls.py from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles ...
- CentOS 6.3下Samba服务器的安装与配置方法(图文详解)
这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下 一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...
- Windows 7操作系统下PHP 7的安装与配置(图文详解)
前提博客 Windows 7操作系统下Apache的安装与配置(图文详解) 从官网下载 PHP的官网 http://www.php.net/ 特意,新建这么一个目录 ...
- Django的安装、使用详解、自动化测试应用以及程序打包
1.Django的安装 pip install Django 验证 Django 是否能被 Python 识别 >>> import django >>> prin ...
- Maven全局配置文件settings.xml详解(转)
Maven全局配置文件settings.xml详解 目录 一.概要 1.settings.xml的作用2.settings.xml文件位置3.配置的优先级 二.settings.xml元素详解 1 ...
- Django之ORM查询操作详解
浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Python脚本中调用Django环境 其他操 ...
- MYSQL服务器my.cnf配置文档详解
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...
随机推荐
- 【测试用例工具】TestLinked的使用实例(转)
转自:https://blog.csdn.net/ikoqzurydr/article/details/81630510
- python 中 super函数的使用
转载地址:http://python.jobbole.com/86787/ 1.简单的使用 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我 ...
- ajax跨域-CORS
CORS:跨域资源共享,是一种跨域访问的W3C标准,它允许浏览器可以跨源服务器进行请求,可以让ajax实现跨域访问.出现跨域问题的原因是浏览器同源策略导致的,协议+域名+端口三者一致被认为是同源.网站 ...
- Requset作用域
案例:当登陆密码或账号不正确时 提示 使用Requset对象中的作用域存储数据 语法:req.setAttribute(key, value);//键值对存在 当密码不存在时,设置作用域 else { ...
- AGC 030 B - Tree Burning 结论+枚举
考试 T2,是一个脑筋急转弯. 最暴力的贪心是每次先选左,再选右,再选左..... 然而这么做在一些情况下是错的. 但是,我们发现我们的选法一定是 $LLLLRLRLRLRLR$ 或 $RRRRLRL ...
- jsp页面解析出错,或出现下载情况.
当没有下面代码时,会出现空白页的bug <dependency> <groupId>org.apache.tomcat.embed</groupId> <ar ...
- 【数论】P1029 最大公约数和最小公倍数问题
题目链接 P1029 最大公约数和最小公倍数问题 思路 如果有两个数a和b,他们的gcd(a,b)和lcm(a,b)的乘积就等于ab. 也就是: ab=gcd(a,b)*lcm(a,b) 那么,接下来 ...
- Pytest权威教程23-不稳定测试
目录 不稳定测试用例处理 为什么不稳定测试是个问题 潜在的根本原因 Pytest特性 其他一般策略 相关研究 相关资源 返回: Pytest权威教程 不稳定测试用例处理 "不稳定" ...
- Codeforces Round #576 (div.1 + div.2)
Div2 A 长度为\(n(n≤10^5)\)的数组,每个元素不同,求有多少个位置\(d\)满足\(d - x \le j < d \And d < j \le d + y a_d< ...
- SQL题(子文章)(持续更新)
-----> 总文章 入口 文章目录 [-----> 总文章 入口](https://blog.csdn.net/qq_37214567/article/details/90174445) ...