跨站伪造请求的防范

tornado web开发之 跨站伪造请求的防范 和 登录详解

和自甴很熟 提交于 2020-04-07 07:17:25
最近在做一个网站的后端开发。因为初期只有我一个人做,所以技术选择上很自由。在 web 服务器上我选择了 Tornado 。虽然曾经也读过它的源码,并做过一些小的 demo,但毕竟这是第一次在工作中使用,难免又发现了一些值得分享的东西。 首先想说的是它的安全性,这方面确实能让我感受到它的良苦用心。这主要可以分为两点: 防范 跨站伪造请求 (Cross-site request forgery,简称 CSRF 或 XSRF)。 CSRF 的意思简单来说就是,攻击者伪造真实用户来发送请求。 举例来说,假设某个银行网站有这样的 URL: http://bank.example.com/withdraw?amount=1000000&for=Eve 当这个银行网站的用户访问该 URL 时,就会给 Eve 这名用户一百万元。用户当然不会轻易地点击这个 URL,但是攻击者可以在其他网站上嵌入一张伪造的图片,将图片地址设为该 URL: < img src = "http://bank.example.com/withdraw?amount=1000000&for=Eve" > 那么当用户访问那个恶意网站时,浏览器就会对该 URL 发起一个 GET 请求,于是在用户毫不知情的情况下,一百万就被转走了。 要防范上述攻击很简单,不允许通过 GET 请求来执行更改操作(例如转账)即可