码迷,mamicode.com
首页 > 其他好文 > 详细

Django之CSRF

时间:2019-12-28 16:00:33      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:技术   st表   字符串   token   加密   获取   djang   有关   最好   

什么是CSRF?

CSRF(Cross-site request forgery),中文名称是跨站请求伪造。攻击情况如下:

A电脑登陆了B网站,而同时又没有关闭浏览器,则cookie是会存在的。A电脑又登陆了C网站,而此网站可能具有攻击性。此时C返回A一个网页,有form请求,如果是提交带着cookie提交给C,则C则获取A的cookie,而可以访问其他访问。
技术图片

如何防CSRF攻击

一般情况下,POST表单提交就有CSRF攻击的风险。而要防止CSRF攻击可以这样,在第一次GET请求时,会返回加密的字符串给客户端,此字符串只能服务器才能解密。下一次提交POST表单时,则用户在善带着此字符串提交。

在FORM表单中防止CSRF攻击

如果在form表彰中不带csrf_token标签进行post请求,则会出现以下情况
技术图片

解决办法:
在模板的form表单中添加{% csrf_token %}
技术图片

在Ajax提交中防止CSRF攻击

方式一、在每个Ajax请求中添加请求头

步骤一、获取csrf_token

步骤二、在请求头中添加csrf_token键值对。

技术图片

方式二、在Ajaxsetup中添加请求头,这样就不用每个ajax请求都需要添加头部信息
技术图片

最好加上判断是否是post请求。

CSRF的禁用与启用

默认情况下,django是全局开启csrf防攻击的功能。

全局禁用方法

技术图片

局部的禁用与启用

导入:from django.views.decorators.csrf import csrf_exempt, csrf_protect

局部禁用:在view函数前加入@csrf_exempt,配合全局启用使用
技术图片

局部启用:在view函数前加入@csrf_protect,配合全局禁用使用
技术图片

Django之CSRF

标签:技术   st表   字符串   token   加密   获取   djang   有关   最好   

原文地址:https://www.cnblogs.com/Treelight/p/12111759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!