django csrf机制

看了很多网上的csrf机制的文章,我觉得百分之99解释的都是错误的。

错误说法1:CsrfViewMiddleware中间件会把form表单的csrfmiddlewaretoken值与cookie的csrftoken字段值作比较,如果一样就表示合法。

what???我试验了一下,我不断地刷新带有form表单的页面,发现cookie的csrftoken在一段时间内并不会变,而表单的csrfmiddlewaretoken会发生变化,而且他俩的值根本不相等,这表名同一个csrftoken可以跟不同的csrfmiddlewaretoken完成合法提交。

错误说法2:django会把csrftoken的值存储到后台,当前台提交时,django会把这个值拿来跟表单中的值作比较,相同即合法。

这更不可能,django中根本没有这张表的存在。

个人觉得比较正确的说法是,CsrfViewMiddleware中间件会把form表单的csrfmiddlewaretoken值与cookie的csrftoken字段值送入一个函数,在函数中会对两个字符串做一些操作(由于我没太过仔细的研究中间件源码,只能把大概思想说出来),用一些的算法做一些计算来得出是否合法。

下面这篇文章的老哥说的不错,但是难度较大,可以细细品味
https://blog.csdn.net/qq_27952549/article/details/82392790

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值