CSRF攻击概述
**CSRF(Cross Site Request Forgery)**是 跨站请求伪造 。
Cookie 有一个过期时间,在这段时间内,Cookie 是存储在客户端的,当再次访问相同的网站时,浏览器会自动在 HTTP 请求中自动带上该网站用户登录后的 Cookie
CSRF 攻击也正是利用这点,借用用户的 Cookie,去执行非用户本意的操作。
举个例子:
小明登录了某网上银行,他来到了网上银行的帖子区,看到一个帖子下面有一个链接写着“科学理财,年盈利率过万”,小壮好奇的点开了这个链接,结果发现自己的账户少了 10000 元。这是这么回事呢?原来黑客在链接中藏了一个请求,这个请求直接利用小明的身份给银行发送了一个转账请求,也就是通过你的 Cookie 向银行发出请求。
<a src=http://www.mybank.com/Transfer?bankId=11&money=10000>科学理财,年盈利率过万</>
所以单纯的使用Cookie,会受到CSRF攻击。
那为什么说Token可以防止CSRF攻击呢?
token 验证的规则是,服务器从请求体(POST)或者请求参数(GET)中获取设置的 token,然后和 Cookie 中的 token 进行比较,一致之后才执行请求。
而 CSRF 攻击只是借用了 Cookie,并不能获取 Cookie 中的信息,所以不能获取 Cooki