前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django的csrf防御机制

Django的csrf防御机制

作者头像
cywhat
发布2022-11-22 21:42:51
3180
发布2022-11-22 21:42:51
举报
文章被收录于专栏:cywhat

前景:

Html页面的表单没有完全使用Django的form进行渲染,故Js不能使用$('#ClassID').serialize()来获取CsrfData,然后报错CSRF token missing or incorrect.

原因:

Django第一次响应来自某个客户端的请求时,会在服务器端随机生成一个Token,把这个Token放在Cookie里。然后每次Post请求都会带上这个Token, 这样可以能避免被Csrf攻击。所以会在每个Html模板中增加一个 {% csrf_token %}标签。

视图函数返回Csrf的三种方式
代码语言:python
代码运行次数:0
复制
return render_to_response('Account/Login.html',data,context_instance=RequestContext(request))

return HttpResponse(_template.render(context, request))

return render(request, 'xxx.html', data)
Html中的展现形式

解决

1.通过Js先获取到Csrf值
代码语言:javascript
复制
<script>
const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;
</script>
2.通过在Ajax设置请求头传递
代码语言:javascript
复制
<script>
    $.ajax({
        headers: {'X-CSRFToken': csrf_token},     
    })
</script>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前景:
  • 原因:
    • 视图函数返回Csrf的三种方式
      • Html中的展现形式
      • 解决
        • 1.通过Js先获取到Csrf值
          • 2.通过在Ajax设置请求头传递
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档