CSRF(Cross-site request forgery),跨站请求伪造。攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己登录态未过期的网站并执行一些操作(如发邮件,发消息,甚至转账和购买商品等)。由于登录态还未过期,所以被访问的网站会认为是真正的用户操作而去执行。比如小明登录过某电商网站,浏览器获取到登录后的 Cookies 并保存在浏览器,这时候攻击者给他发来一个链接 <a href="http://dswz.com/buy?product=xxxx">点击看看</a>
,而小明由于好奇点击了,导致了在不知情的情况下在电商网站购买了商品
防范手段
可以看出 CSRF 的攻击手段非常简单,就是利用用户的疏忽以及某些接口直接就能请求,未做任何验证。所以防范手段也很简单,就是对接口做验证,毕竟我们不可能指望用户有能力识别点击的链接是否安全
- 验证码验证
- CSRF_TOKEN 验证
验证码验证还好理解,那么 CSRF_TOKEN 验证该怎么做呢?其实也很简单,就是后端在每次请求页面时都生成一个 token(随机字符串),并写入 session 中,然后将这个 token 渲染到前端页面中。前端页面每次请求接口时都必须带上这个 token,后端会验证这个 token 和 session 里的 token 的值是否相同,相同即合法,不同则不合法
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。