CSRF攻击及防护
Posted on:2024年7月18日 | at 23:22 - 跨站点请求伪造(Cross-Site Request Forgeries),冒充用户发起请求(在用户不知情的情况下), 完成一些违背用户意愿的事情(如修改用户信息,删初评论等)。
- 1、可能造成危害:
- 利用已通过认证的用户权限更新设定信息等;
- 利用已通过认证的用户权限购买商品;
- 利用已通过的用户权限在留言板上发表言论。
- 2、防御:
- 验证码;强制用户必须与应用进行交互,才能完成最终请求。
- 尽量使用 post ,限制 get 使用;get 太容易被拿来做 csrf 攻击;
- 请求来源限制,此种方法成本最低,但是并不能保证 100% 有效,因为服务器并不是什么时候都能取到 Referer,而且低版本的浏览器存在伪造 Referer 的风险。
- token 验证 CSRF 防御机制是公认最合适的方案。
- 使用token的原理:
- 第一步:后端随机产生一个 token,把这个token 保存到 session 状态中;同时后端把这个token 交给前端页面;
- 第二步:前端页面提交请求时,把 token 加入到请求数据或者头信息中,一起传给后端;
- 后端验证前端传来的 token 与 session 是否一致,一致则合法,否则是非法请求。