flask django 的 csrf对比

flask实现csrf:
在访问页面时,后台就会利用from flask_wtf.csrf import generate_csrf生成csrf,并且把他存储到cookie里。
csrf_token = generate_csrf()
response.set_cookie(‘csrf_token’, csrf_token)
生成的csrf会默认存到session中,存到redis里。
当用户post提交请求时,可以从cookie中拿到csrf信息设置到请求头中,发送给后台,
headers: {
“X-CSRFToken”: getCookie(“csrf_token”)
},
后台利用from flask_wtf.csrf import CSRFProtect进行验证
csrf = CSRFProtect()
这个函数会在session中和提交的请求头中获取2个csrf信息,然后比较是否通过。

而django实现csrf保护,首先需要打开中间件’django.middleware.csrf.CsrfViewMiddleware’,并且在模板中form提交时加上{% csrf_token %}
这回使模板添加了一个隐藏的input字段,name = ‘csrfmiddlewaretoken’,值就是对应的csrf的值,所以如果你想要动态向post请求,
csrf = $(‘input[name=”csrfmiddlewaretoken”]’).val()
params = {‘csrfmiddlewaretoken’:csrf}
params放到ajax中
当启用中间件并加入标签csrf_token后,会向客户端浏览器中写入一条Cookie信息,这条信息的值与隐藏域input元素的value属性是一致的,
提交到服务器后会先由csrf中间件进行验证,如果对比失败则返回403页面,而不会进行后续的处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值