CSRF攻击
CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
CSRF主要是冒用受害者登录凭证发起恶意的增删改并不会窃取受害者隐私信息
# 主动型攻击
- 受害者访问
http://a.com
并在自己浏览器留下http://a.com
的登录态 - 攻击者诱导受害者访问三方网站
http://b.com
- 三方网站
http://b.com
有访问http://a.com
接口的恶意代码(删除/增加/修改等) - 受害者点击
http://b.com
的时候,http://b.com
带着http://a.com
的登陆凭证冒充受害用户执行对http://a.com
的恶意操作
# 被动型攻击
- 攻击者在
http://a.com
发布带有恶意链接的帖子或者评论(提交对http://a.com
带有增删改的诱导型img/form/a标签) - 当其他拥有登录态的受害者点击该评论的恶意链接冒用受害者登录凭证发起攻击
# 如何防范?
CSRF 的防御可以从 服务端 和 客户端 两方面着手,一般 CSRF防御 在服务端进行。
- 检查 HTTP 头部的
Referer
字段。但该字段也有可能会被篡改 - 操作区添加验证。例如
验证码
(敏感字段提交添加验证码校验已经是默认的防御措施) - 添加校验
token
(添加 token 检验是比较好的方法)