django csrf 防跨站攻击

csrf 攻击原理:
django csrf 防跨站攻击 - 第1张  | 小强的博客

 # django使用(CsrfMiddleware)进行Csrf防护,原理如下:

1.它修改当前处理的请求,向所有的 POST 表单增添一个隐藏的表单字段,使用名称是 csrfmiddlewaretoken,

值为当前会话 ID 加上一个密钥的散列值。 如果未设置会话 ID ,该中间件将不会修改响应结果,

因此对于未使用会话的请求来说性能损失是可以忽略的。

 

2.对于所有含会话 cookie 集合的传入 POST 请求,它将检查是否存在 csrfmiddlewaretoken 及其是否正确。

如果不是的话,用户将会收到一个 403 HTTP 错误。 403 错误页面的内容是检测到了跨域请求伪装。 终止请求。

该步骤确保只有源自你的站点的表单才能将数据 POST 回来。

另外要说明的是,未使用会话 cookie 的 POST 请求无法受到保护,但它们也不 需要 受到保护,

因为恶意网站可用任意方法来制造这种请求。为了避免转换非 HTML 请求,中间件在编辑响应结果之

前对它的 Content-Type 头标进行检查。 只有标记为 text/html 或 application/xml+xhtml 的页面才会被修改。

 

CSRF设置步骤:
第一步: 在settings.py中的MIDDLEWARE_CLASSES部分添加’django.middleware.csrf.CsrfViewMiddleware’,如果使用普通方式创建的django项目,这一项一般都已经存在了不用额外设置。
django csrf 防跨站攻击 - 第2张  | 小强的博客

 

第二步:在POST表单的template中加入csrf_token。这一步很简单,在模板中添加如下代码:

django csrf 防跨站攻击 - 第3张  | 小强的博客

 

第三步:在请求处理方法中添加context processor。

使用RequestContext,RequestContext始终都使用了’django.core.context_processors.csrf’。
django csrf 防跨站攻击 - 第4张  | 小强的博客

 

验证结果:
django csrf 防跨站攻击 - 第5张  | 小强的博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值