Python web-Django CSRF跨站请求伪造防护( 二 )

3、恶意网站B的自动化请求 , 执行就是在用户A的同一个浏览器上 , 因此在访问网站A的时候 , 浏览器会自动带上网站A的cookies 。

4、所以网站A在接收到请求之后 , 可判断当前用户登录状态 , 所以根据用户的权限做具体的操作逻辑 。


防范措施

1、在指定表单或者请求头的里面添加一个随机值作为参数 。

2、在响应的cookie里面也设置该随机值 。

3、用户正常提交表单的时候会默认带上表单中的随机值 , 浏览器会自动带上cookie里面的随机值 , 那么服务器下次接收到请求之后就可以取出两个值进行校验 。

4、对于网站B来说网站B在提交表单的时候不知道该随机值是什么 , 所以就形成不了攻击 。


Django中CSRF中间件

django在创建项目的时候 , 默认就会有添加中间进行CSRF的保护 , 在MIDDLEWARE可以看到加载了django.middleware.csrf.CsrfViewMiddleware的中间件 , 这里是全局设置 , 也可以局部设置 。

推荐阅读