基本概述
攻击者用户可以伪造admin用户转张请求,强制admin用户,转涨给任意用户
基本概念
跨站请求伪造(Cross Site Request Forgery,CSRF)
CSRF时一种攻击,它强制终端用户在当前身份验证后的WEB应用程序上执行非本意操作的攻击。
CSRF的重点在更改请求,而不是盗取数据,攻击者无法查看伪造请求的响应
没有退出登录
SCRF是一种欺骗用户提交恶意请求的攻击,它继承了用户的身份和特权,执行用户非本意的操作
多数站点浏览器会自动发送与站点关联的所有凭证,比如Cookie信息 ,IP地址,window域凭证等,
重要点
1:浏览器登录信任的网站A
2:通过验证,在浏览器中产生A的身份凭证
3:用户在没有登录出A网站的情况下,访问了危险的网站B
4:载入恶意代码,要求用户访问(发送请求)站点A
5:根据(4)中的代码,携带者(2)产生的身份凭证访问A
CSRF漏洞的防御
无效防御
~~使用秘密的cookie
~~仅接收POST请求
··多步交易,有可能会被恶意攻击者预测
## URL重写
1:用户的身份信息和暴露在URL中
2:不建议通过引入另外一个漏洞来解决当前漏洞
有效防御
验证Referer字段
1:当前URL的上一个URL
2:是否可以伪造
添加Token验证
1:一串随机字符串
2:每次客户端的请求,服务器都要刷新Token
3:服务器创建一个Token值,存储在服务器中并且下发到浏览器
4:下次浏览器请求,需要提交该Token值,服务器根据浏览器提交的Token,与服务器存储的Token进行对比
5:如果二者一致,说明请求时正常业务流程
6:如果二者不一致,说明请求有可能来自恶意攻击者
7:Token的设计,在PHP中通常利用ESSESSION机制来实现