1.1 CSRF攻击原理
用户登录A网站
A网站确认身份(给客户端cookie)
B网站页面向A网站发起请求(带上A网站身份)
1.2 CSRF防御
Get 请求不对数据进行修改
不让第三方网站访问到用户 Cookie
阻止第三方网站请求接口
请求时附带验证信息,比如验证码或者 Token
SameSite
可以对 Cookie 设置 SameSite 属性。该属性表示 Cookie 不随着跨域请求发送,可以很大程度减少 CSRF 的攻击,但是该属性目前并不是所有浏览器都兼容。
Token验证
cookie是发送时自动带上的,而不会主动带上Token,所以在每次发送时主动发送Token
Referer验证
对于需要防范 CSRF 的请求,我们可以通过验证 Referer 来判断该请求是否为第三方网站发起的。
隐藏令牌
主动在HTTP头部中添加令牌信息
禁止第三方网站带cookies
same-site属性。 设置只有同一站点的请求才能携带cookie
1.3 CSRF蠕虫
如果某个用户打开了被攻击网页,并且用户同时访问了攻击者的网页。 那么攻击者的网页就会使用用户的身份发送一些请求,并且常用用户的身份发布一些评论或文章,里面包含攻击者的网页链接。如果其他用户看到了这个用户的这条评论,都甚至可以不点击,其他用户也会被盗用身份发送一些恶意请求。这样病毒的传播就会越来越快,影响越来越大。
1.4 CSRF攻击危害
利用用户登录态
用户不知情
完成业务请求
盗取用户资金
冒充用户发帖背锅
损坏网站名誉