# 注: 部分内容参考网上, 侵删
CSRF(Cross-site request forgery) 跨站请求伪造, 是一种对网站的恶意利用 它会通过伪装成受信任用户的请求来利用受信任的网站来获取一些信息.
举个小栗子来解释原理 (故事纯属虚构):
A 用户在某个银行有一笔不小的存款, A 用户可以通过该银行的网站来进行存款和提现等请求, 当请求发送到网站后, 服务器会先验证该请求是否来自一个合法的 session, 并且保存. 当黑客 B 发现了该目标用户 A 之后, 黑客 B 便在该银行网站注册账户. 黑客 B 可以通过 A 用户的某个 URL 来进行转账. 但是, 该 URL 的请求来自黑客 B 但并非来自用户 A, 所以无法通过验证. 这时, 黑客 B 便可以自己创建一个网站, 该网站的部分请求中会有 A 用户的转账的 URL, 黑客 B 的网站里面有许多诱人的东西, 来诱惑用户 A 来访问该网站. 如果用户 A 刚刚在该银行网站上进行过转账等操作, 便被黑客 B 的网站诱惑到, 以至于来访问该黑客网站, 这个时候用户 A 的浏览器与银行网站之间的 session 尚未过期, 浏览器的 cookie 之中含有 用户 A 的认证信息. 这时, 悲剧发生了, 这个 url 请求就会得到响应, 钱将从 用户 A 的账号转移到 黑客 B 的账号, 而 用户 A 当时毫不知情, 还在很开心的访问着黑客 B 的黑网站.
CSRF 攻击之所以能够成功, 是因为黑客可以伪造用户的请求, 请求的信息都是存在 cookie 或 session 中的. 要想抵御 CSRF, 关键在于在一些重要请求中放入一些黑客不能伪造的信息.
抵御 CSRF 有三种方法:
1. 验证码
2.refer 头
3.Token
我们便来说说第三中方法 Csrf_token
Token 就是一个令牌, 他是一个随机的值, Token 最大的特点就是随机性, 不可预测
他可以在请求的时候随机产生一个令牌, 并在服务器上建立一个拦截器来验证该令牌, 如果两者不匹配或者没存在令牌, 便会拒绝该请求.
注意当然不能写到 cookie 中, 因为浏览器在发出恶意 csrf 请求时, 是自动带着你的 cookie 的
运用的时候在 form 表单中需要加上
并且在用的时候也需要获取一下该 token
温馨提示:
在生活中, 一定要注意网上的一些垃圾信息, 和一些不健康网站. 在我们刚刚在某网站转账完毕或者登陆完毕之后, 就不要去访问内些垃圾网站, 防止我们的信息被盗取.
来源: https://www.cnblogs.com/coolwxh/p/10469491.html