CSRF概述
CSRF全称Cross-Site Request Forgery,跨站请求伪造,也可缩写为XSRF
CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
CSRF攻击例子
用户通过浏览器访问A站点,A站点通过某种方式向B站点发起请求,假如浏览器中当前还记录着有效的B站点登录信息,如cookie中存在JSESSIONID或remember-me,且浏览器不阻止这种请求,则总体而言,在用户不知情的情况下,浏览器向B站点发起了一次请求
假如一家银行用以执行转账操作的URL地址如下:
https://bank.example.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
那么,一个恶意攻击者可以在另一个网站上放置如下代码:<img src="https://bank.example.com/withdraw?account=Alice&amount=1000&for=Badman" />
如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。
CSRF防御
- 浏览器检查HTTP头部Referer字段,不允许跨域访问
- 服务器返回页面的表单时,添加一个随机生成的CSRF token。服务器随后在接收该表单的提交请求时,检查提交数据中是否有合法的CSRF token
参考文档
PREVIOUSMySQL数据库定时备份
NEXTJava线程中断