CSRF 攻击
CSRF 攻击
CSRF:(Cross-site request forgery),中文名称,跨站请求伪造。也被称为 one click attack/session riding。
可以这么理解 CSRF 攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。
CSRF 原理
CSRF 的思路是这样:
首先假设你成功登录了 A 网站,这个是个正常网站,获得了它的 cookie。
然后无意中你在 B 网站上操作的操作发起了一个请求,但是这个请求的地址是 A 网站的,因为你有 A 网站的 cookie,所以 A 网站会认为这个请求是合法的。所以如果 B 网站构造的这个请求有比较敏感的操作,就会比较危险了。
防御方式
页面增加随机数
这种方式是在 post 请求的表单里添加一个随机数,这个随机数得是 B 网站拿不到的,一种是将 cookie 哈希,因为 B 网站肯定是无法拿到 A 网站的哈希的。二是获取表单的页面时从后端获取一个随机数,这种 B 网站也无法拿到。
验证 http Referer 字段
B 网站发送的请求,http Referer 字段是 B 网站的域名。
但是每种浏览器实现 http Referer 的实现不一样,不能保证没有问题。
在请求地址中添加 token 验证
GET 请求的地址中添加 token,POST 请求的 body 里加上。因为 token 不像 cookie 可以自动的添加到请求里。
当然这种方式需要注意 token 的安全。黑客可以自己去 A 网站注册得到 token。
在 HTTP 头中添加自定义属性
这种方式和签名使用 token 的方式本质上是一样的,好处是批量的给所有请求加上 header 头会比在 post 请求的 body 里加上字段容易的多。
Read other posts