资讯专栏INFORMATION COLUMN

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

Zoom / 827人阅读

摘要:上一篇文章第二章实战演练开发网站第八节用户身份认证下一篇文章第三章概念及应用第一节概念跨站请求伪造,或是一种对网站的恶意利用。其中是存在漏洞的网站,而是存在攻击行为的恶意网站。

上一篇文章: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站点提交提款请求


三百万元抽奖,免费拿

用户一旦点击恶意链接,就在不知情的情况下向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()函数标签,比如:
{% module xsrf_form_html() %}

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42613.html

相关文章

  • PythonTornado 二章实战演练开发Tornado网站:第八节:用户身份认证

    摘要:上一篇文章第二章实战演练开发网站第七节安全机制下一篇文章第二章实战演练开发网站第九节防止跨站攻击在的类中有一个属性用于保存当前请求的用户名。实例使用属性及方法来实现用户身份控制。该地址被用于装饰器在发现用户尚未验证时重定向到一个。 上一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第七节:安全Cookie机制下一篇文章:Python:Tornado 第...

    Kahn 评论0 收藏0
  • PythonTornado 第三章:HTML5 WebSocket概念及应用:第一节:WebSoc

    摘要:上一篇文章第二章实战演练开发网站第九节防止跨站攻击下一篇文章第三章概念及应用第二节服务端编程的异步特性使得其非常适合服务器的高并发处理,客户端与服务器的持久连接应用框架就是高并发的典型应用。因为是的标准协议,所以不受企业防火墙的拦截。 上一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第九节:防止跨站攻击下一篇文章:Python:Tornado 第三章...

    mo0n1andin 评论0 收藏0
  • PythonTornado 二章实战演练开发Tornado网站:第六节:异步与协程化

    摘要:上一篇文章第二章实战演练开发网站第五节输出相应函数下一篇文章第二章实战演练开发网站第七节安全机制有两种方式可改变同步的处理流程异步化针对的处理函数使用修饰器,将默认的同步机制改为异步机制。使用异步对象处理耗时操作,比如本例的。 上一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第五节:RequestHandler:输出相应函数下一篇文章:Python:...

    cod7ce 评论0 收藏0
  • PythonTornado 二章实战演练开发Tornado网站第二节:路由解析

    摘要:上一篇文章第二章实战演练开发网站第一节网站结构下一篇文章第二章实战演练开发网站第三节接入点函数向对象传递的第个参数路由映射列表的配置方式与类型,用正则字符串进行路由匹配。实例参数路径在浏览器输入页面输出其中的是正在表达式。 上一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第一节:网站结构:HelloWorld下一篇文章:Python:Tornado ...

    cppprimer 评论0 收藏0
  • PythonTornado 二章实战演练开发Tornado网站:第七节:安全Cookie机制

    摘要:上一篇文章第二章实战演练开发网站第六节异步与协程化下一篇文章第二章实战演练开发网站第八节用户身份认证是很多网站为了辨别用户的身份而存储在用户本地终端的数据,在中使用可以方便地对进行读写。 上一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第六节:异步与协程化下一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第八节:用户...

    dmlllll 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<