2020年最新Django经典面试问题与答案汇总(中)-大江狗整理

本文是Django经典面试问题与答案系列的中篇,如果还未读过第一篇的,请点击这里。小编精心收集,希望对大家学习和工作有所帮助,欢迎转载点赞啊。

11. 简单说说看 Django的CSRF防御机制

Django的CSRF保护主要是通过django.middleware.csrf.CsrfViewMiddleware中间件来实现的。主要流程如下:

  • Django 第一次响应来自某个客户端的get请求时,会在服务器端随机生成一个 csrftoken(一串64位的随机字符串),把这个 token 放请求头的 cookie 里返回给用户。

  • 所有通过POST方式提交的表单在渲染时中必须包含一个 csrfmiddlewaretoken 隐藏字段 (在模板中通过{% csrf_token %}标签生成)。

  • 当用户通过POST提交表单时,Django会从请求头cookie取csrftoken这一项的值,再从POST表单里取csrfmiddlewaretoken交由中间件进行校验两者是否一致。如果一致表明这是一个合法请求,否则返回403 Forbidden.

注意csrftokencsrfmiddlewaretoken并不是简单相等的两个字符串,而是通过算法判断是否一致相等的,如下图所示。

12. Django中使用AJAX发送POST请求时如何通过CSRF认证?

1. 第一种方式直接在发送数据中加入csrfmiddlewaretoken
<script>
  $("#btn").on("click",function () {
        $.ajax({
            url:"/some_url/",
            type:"POST",
            data:{
                csrfmiddlewaretoken:{
   { csrf_token }
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值