前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tornado:实现自定义csrf验证

tornado:实现自定义csrf验证

作者头像
超级大猪
发布2019-11-22 09:36:29
8150
发布2019-11-22 09:36:29
举报
文章被收录于专栏:大猪的笔记

在web编程中,有时会有很多非主流的用法。比如用get方式来删除一个资源:

代码语言:javascript
复制
/localhost/ads/delete?id=123

这样很容易引入跨站攻击。 在tornado中,可以用系统的csrf检测机制规避一些风险。

处理页

在处理页面中,直接调用check_xsrf_cookie()做跨站检测。

代码语言:javascript
复制
class AdminAdsDelete(BasicHandler):
    def get(self):
        self.check_xsrf_cookie()
        id = int(self.get_argument("id", default=0))
        ...

前端页面

因为后端做了检测,在index页面中,必须把csrf token传入到前端。可以用self.xsrf_token获取这个token。

代码语言:javascript
复制
class AdminAdsIndex(BasicHandler):
    def get(self):
        ...
        self.render("admin/ads/index.html", ad_list=ad_list, xsrf_token=self.xsrf_token)

此时,在链接中,必须加入csrf token做get参数。否则在处理页check_xsrf_cookie()会引发检测,造成403错误。

代码语言:javascript
复制
<span class="btn-del">
    <a href="/admin/ads/delete?id={{item.id}}&_xsrf={{xsrf_token}}">删除</a>
</span>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-07-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 处理页
  • 前端页面
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档