django中跨站请求伪造与中间件
跨站请求伪造的作用:
- 跨站请求伪造是为了防止非法post数据
- 浏览器第一次访问服务端,服务端会分配一个token
- 如果浏览器要post数据到服务端,需要带上服务端分配的token
- 该token存放在客户端cookie中
- 跨站请求伪造可以绕过
- 请注意通过form和ajax提交数据,他们是怎么带上token的
绕站跨站请求伪造的方法:
在settings.py中注释掉'django.middleware.csrf.CsrfViewMiddleware',如下:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'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',
]
绕站跨站请求伪造和中间件的关系
- 跨站请求为找是一种中间件
什么是中间件
- 中间件相当于连接客户端和服务端的管道
- 从浏览器来的所有请求都需要经过中间件(比如可以记录访问日志)
- 从服务端出去的所有返回都需要经过中间件
- 从客户端到服务端,中间件的执行是从上到下,从服务端返回数据到客户端,中间件的执行顺序是从下到上
- 可以自定义中间件类
- 自定义中间件类中需要遵循有如下两个函数和参数
-
class Mymiddleware(object): def process_request(self, request): pass def process_response(self, request, response): pass
浙公网安备 33010602011771号