惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
小众软件
小众软件
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
博客园_首页
T
Tailwind CSS Blog
The Cloudflare Blog
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
P
Proofpoint News Feed
aimingoo的专栏
aimingoo的专栏
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
D
Docker
Microsoft Azure Blog
Microsoft Azure Blog

cywhat's blog

Mac修改brew源 Java编译出现java.lang.ExceptionInInitializerError Linux生成自定义名称的ssh证书 Jmeter进行分布式压测 Python创建并上传自己的pip依赖包 Django操作异步任务 Linux卸载RabbitMQ Linux安装RabbitMQ ValueError:invalid UnorderedObjectListWarning:Pagination May Yield Inconsistent Results With an Unordered Object_list Jenkins端口修改之后没有生效 Mac出现xxx@bogon Linux忘记mysql密码解决办法 Pkg_resources.DistributionNotFound:The Supervisor==3.4 Failing Package Is: Mysql Community Libs Compat 5.7.37 1.el7 2022收一收 搭建IOS和Android性能监控工具 Jenkins添加html报告并发送到邮箱 Jenkins插件无法安装解决 Jenkins报错 Bash:newman:command Not Found Linux安装newman生成postman脚本报告 MoudleNotFoundError: No module named 'xxx' Failed to Extract Shortcode:template for Shortcode Admonition Not Found Zsh Problem Compinit503 No Such File or Directory Usr Local Share Zsh Site Django删除表重建 Python如何让字典保持有序存储 魔戒使用教程 Python获取当前位置所在行数以及函数名 Django连接Mysql配置 Mac安装mysql5.7
Django的csrf防御机制
cywhat · 2022-07-04 · via cywhat's blog

前景:

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

原因:

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

视图函数返回Csrf的三种方式

1
2
3
4
5
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中的展现形式

/img/img60.png

解决

1.通过Js先获取到Csrf值

1
2
3
<script>
const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;
</script>

2.通过在Ajax设置请求头传递

1
2
3
4
5
<script>
    $.ajax({
        headers: {'X-CSRFToken': csrf_token},     
    })
</script>

关注一下再走吧

公众号 小程序

赞赏支持

微信打赏 支付宝打赏