Python:Tornado 第二章:实战演练:开发Tornado网站:第九节:防止跨站攻击

news/2024/4/27 8:57:30/文章来源:https://blog.csdn.net/weixin_33947521/article/details/88711682
上一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第八节:用户身份认证
下一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及应用:第一节:WebSocket概念

跨站请求伪造(Cross-site request forgery,CSRF 或XSRF)是一种对网站的恶意利用。通过CSRF,攻击者可以冒用用户的身份,在用户不知情的情况下执行恶意操作。

1、CSRF攻击原理

下图展示了CSRF的基本原理。其中Site1是存在CSRF漏洞的网站,而SIte2是存在攻击行为的恶意网站。

图片描述
上图内容解析如下:

  • 用户首先访问了存在CSRF漏洞网站Site1,成功登陆并获取了Cookie,此后,所有该用户对Site1的访问均会携带Site1的Cookie,因此被Site1认为是有效操作。
  • 此时用户又访问了带有攻击行为的站点Site2,而Site2的返回页面中带有一个访问Site1进行恶意操作的连接,但却伪装成了合法内容,比如下面的超链接看上去是一个抽奖信息,实际上却是想Site1站点提交提款请求
<a href='http://www.site1.com/get_money?amount=500&dest_card=34XXXXX">
三百万元抽奖,免费拿
</a>
  • 用户一旦点击恶意链接,就在不知情的情况下向Site1站点发送了请求。因为之前用户在Site1进行过登陆且尚未退出,所以Site1在收到用户的请求和附带的Cookie时将被认为该请求是用户发送的正常请求。此时,恶意站点的目的也已经达到。

2、用Tornado防范CSRF攻击

为了防范CSRF攻击,要求每个请求包括一个参数值作为令牌的匹配存储在Cookie中的对应值。

Tornado应用可以通过一个Cookie头和一个隐藏的HTML表单元素向页面提供令牌。这样,当一个合法页面的表单被提交时,它将包括表单值和已存储的Cookie。如果两者匹配,则Tornado应用认可请求有效。

开启Tornado的CSRF防范功能需要两个步骤。

【1】在实例化tornado.web.Application时传入xsrf_cookies=True参数,即:
application=tornado.web.Application([
(r'/',MainHandler),
],
cookie_secret='DONT_LEAK_SECRET',
xsrf_cookies=True,
)

或者:

settings={
"cookie_secret":"DONT_LEAK_SECRET",
"xsrf_cookies":True
}application=tornado.web.Application([
(r'/',MainHandler),
],**settings)
当tornado.web.Application需要初始化的参数过多时,可以像本例一样通过setting字典的形式传入命名参数
【2】在每个具有HTML表达的模板文件中,为所有表单添加xsrf_form_html()函数标签,比如:
<form action="/login" method="post">
{% module xsrf_form_html() %}
<input type="text" name="message"/>
<input type="submit" value="Post"/>
</form>

这里的{% module xsrf_form_html() %}起到了为表单添加隐藏元素以防止跨站请求的作用。

Tornado的安全Cookie支持和XSRF防范框架减轻了应用开发者的很多负担,没有他们,开发者需要思考很多防范的细节措施,因此Tornado内建的安全功能也非常有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_819717.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

福利!在线编写代码的网站

又是一波福利啊。在线写代码&#xff0c; 这大大的方便了我学习其他语言。之前就出过笔记--关于在线写代码的网站&#xff0c;我也是从某个大牛的文章中找到的&#xff08;忘了博主名了&#xff09;。今天重温。 ------------------第一个在线代码网站 网址&#xff1a;http:/…

网站SEO优化(百度收录 HTML 谷歌收录)

2019独角兽企业重金招聘Python工程师标准>>> 首先可以百度搜索一下 网站SEO优化&#xff0c;搜索出来的结果基本都是收费的、 换一种搜索关键字&#xff1a;HTML SEO优化 看到的是下面的结果 在下面一点的时候 可以看到有技术博客&#xff0c;看来是找对门了。但是…

THINKPHP网站漏洞修复对于远程写入网站木马文件漏洞详情与修补

THINKPHP漏洞修复,官方于近日&#xff0c;对现有的thinkphp5.0到5.1所有版本进行了升级&#xff0c;以及补丁更新&#xff0c;这次更新主要是进行了一些漏洞修复&#xff0c;最严重的就是之前存在的SQL注入漏洞&#xff0c;以及远程代码执行查询系统的漏洞都进行了修复&#xf…

推荐一个解剖学网站

博主高中是物生班的&#xff0c;非常喜欢生物这门课&#xff0c;后来学了很多工程类的知识&#xff0c;愈发觉得人体真是一个伟大的工程架构&#xff0c;我们如今的工程学&#xff0c;很多也是在变相的拓展人体的能力。从这个角度来看&#xff0c;医生就是人体维修师&#xff0…

C#运行网站报错:0x800700b7

1、错误信息“错误代码 0x800700b7 配置错误定义了重复的************“ 2、本机环境 windows7 IIS 7 3、解决方案

刚学编程的程序员必备这5大编程网站,你知道几个?

一个好的网站&#xff0c;就是程序员学编程的基地。虽说新手程序员也许知道一些在线编程网站&#xff0c;但是质量上乘的编程网站又知道几个呢?下面就来给大家推荐5个质量上乘的编程网站&#xff1a;0、LeetcodeLeetCode是大名鼎鼎的在线刷题网站&#xff0c;通过该网站的刷题…

大型网站优化方案思路技巧总结

在大型网站优化当中&#xff0c;SEO的术体现的并不明显。比如外链、TDK等这些基础的专业点比重是比较低的。对于大型网站的SEO优化操作更多的需要去把控好网站运营的思维来进行优化和调控&#xff0c;严格来说&#xff0c;哪怕是一个小型的企业网站&#xff0c;如果运用了大型网…

IIS部署本地网站提示无法启动网站,另一程序正在使用此文件,进程无法访问

今天在本地使用IIS部署的网站无法启动&#xff0c;因为https默认端口是443&#xff0c;为了避免本机计算机会存在以4开头的端口&#xff0c;因此我尝试使用555端口&#xff0c;结果成功解决问题。 结论 是要发布的网站的端口和本地其他服务的端口冲突了。 如果你使用了多个端…

大型网站技术架构(七)网站的可扩展性架构

2019独角兽企业重金招聘Python工程师标准>>> 扩展性是指对现有系统影响最小的情况下&#xff0c;系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化&#xff0c;并在此基础上&#xff0c;降低模块间的耦合性&#xff0c;提供模块的复用性。模…

IIS如何发布本地ASP.NET的网站或service

首先&#xff0c;在Visio Studio中将网站rebuild解决方案之后&#xff0c;在解决方案的窗口中邮件选择“publish”&#xff0c;然后指定文件夹&#xff1b; 具体请参考&#xff1a; 打开IIS&#xff08;Internet Information Services&#xff09;管理器 右键网站–>“添加…

域名证书是什么样子的_教你GitHub pages开启Https访问、自定义域名和CDN网站加速...

httpsGitHub page是什么&#xff1f;我只是简短讲一讲自己的理解&#xff0c;更详细的还请自行搜索&#xff0c;如果错误还请指出。GitHub pages 是一个能存放静态资源的服务器。你可以把它当做apache服务器使用。同时支持使用自定义域名解析&#xff0c;而且也支持HTTPS加密访…

dota2自建房间服务器,创建房间与房间设置 - DOTA2 - 刀塔官方网站 - 勇士令状全新上线 天陨旦活动模式推出...

在创建房间界面选择创建房间玩家进入天辉或者夜魇下面的空位&#xff0c;解说员进入解说频道。点击编辑设置可以进入设置界面可以给房间加密码&#xff0c;其他玩家可以用过密码来寻找这个房间&#xff0c;可以给房间起名字&#xff0c;如果单机测试可以勾选启用作弊、用AI玩家…

怎么在服务器上复制网站,云服务器 复制站点

云服务器 复制站点 内容精选换一换云服务器备份的约束限制如下&#xff1a;一个服务器只可加入一个备份策略。支持备份服务器中的共享云硬盘。支持选择服务器中的部分云硬盘进行备份&#xff0c;但必须将备份的云硬盘作为整体进行恢复&#xff0c;且不支持文件或者目录级别的恢…

先写html再写php,在做网站先写html还是css?哪种效果比较好

很多程序员在制作网站的时候都会有一个问题&#xff0c;不知道是先写html还是css&#xff0c;想知道有经验的程序员是先写css还是写html吗&#xff0c;接下来我们来看一下高手的步骤是怎样的。为此&#xff0c;小编上网百度&#xff0c;发现也有很多答案&#xff0c;有的高手是…

检查域名是否可以访问_域名续费后访问网站显示域名过期的原因

有时我们可能会忘记给域名续费&#xff0c;导致网站域名过期。但是我们在续费之后网站依然显示域名过期是怎么回事?域名续费后访问网站显示域名过期的原因域名续费后访问网站显示域名过期的原因一、域名续费后解析是否生效在域名续费后&#xff0c;域名的解析记录通常会在2-24…

JSON.parseObject(String str)与JSONObject.parseObject(String str)的区别

一、fastjson fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器&#xff0c;来自阿里巴巴的工程师开发。其主要特点是&#xff1a; ① 快速&#xff1a;fastjson采用独创的算法&#xff0c;将parse的速度提升到极致&#xff0c;超过所有基于Java的json库&…

网站内容禁止复制的js代码

网站内容禁止复制的js代码 这篇文章主要介绍了JS如何实现网站内容禁止复制的方法&#xff0c;希望可以帮助到你~ 方法1&#xff1a; 在网页中加入以下代码&#xff1a; <script language"Javascript"> document.οncοntextmenunew Function("event.ret…

idea 快速导入实现父类方法_快速让网站实现10000+流量方法

一、友情链接友情链接无疑是作用最好的外链&#xff0c;有些情况下一个友情链接的作用可能等价于几百个甚至上千个论坛外链的作用&#xff0c;所以说要想明显地提升网站权重或是关键词排名&#xff0c;最有效的办法就是获得高权重的友情链接。在实际工作中主要是通过以下几个方…

python3.7.4游戏代码,推荐4个 Python 的编程游戏网站

↑关注 星标 &#xff0c;每天学Python新技能后台回复【大礼包】送你Python自学大礼包转自 Python编程时光学习编程虽然对有些人来说是件乐事&#xff0c;但是对大多数人来说仍然是一件比较枯燥困难的事情。当然&#xff0c;面临这样困惑的人并不是你一个。于是就出现了许多通…

WordPress站点地图html代码,wordpress代码实现网站地图sitemap的html和xml的方法

直接在原作者的基础上做了一些小小的修改&#xff0c;原理很简单&#xff0c;就是自动调用Wordpress的文章、分类、页面。当然如果怕麻烦也可以使用baidu sitemap generator这个插件&#xff0c;也是非常不错的插件。今天介绍的就是不使用插件完成wordpress代码实现网站地图sit…