CSRF防范介绍之一
一、前言
CSRF是Cross Site Request Forgery的缩写,即跨站请求伪造,CSRF攻击是借助受害者的Cookie骗取服务器的信任,以受害者名义伪造请求对服务器进行攻击,一直以来有个疑问,前后端分离使用LocalStorage存储用户令牌token是否还存在CSRF漏洞?今天我们先用Flask 搭建一个CSRF攻击简单例子来理解一下攻击过程,只有理解是如何攻击的才能做好防范。
二、正常网站A
搭建一个虚拟的银行网站,应用启动于8080端口,账号登录后就可以向其他账号进行转账,程序代码结构如下:
index.py
注:GET请求进入登录页面,POST请求获取登录页用户名密码验证通过后跳到转账页面,然后设置Cookie,用于转账时对用户进行验证。
注:GET请求进入转账页面,POST请求进行转账,转账前先验证Cookie是否有效,然后再进行转账。
login.html
transfer.html
登录成功后进入转账页面可以进行正常转账
如果没登录直接打开页面 http://127.0.0.1:8080/transfer是会被重定向到登录页,必须先登录才能进行转账页面。
三、恶意网站B
另外搭建一个攻击网站,这里我们将应用启动在8081端口,代码结构如下:
index.py
index.html
A网站登录没有退出的情况下,在B网站点击链接
这样你用qingcai1在A网站登录然后点击了B网站的链接,qingcai1的钱就被恶意地转到qing
cai2账号去了。