A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangrui 中级黑马   /  2018-11-1 11:16  /  1217 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

CSRF
CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造是一种对网站的恶意利用
CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......
造成的问题:个人隐私泄露以及财产安全。


CSRF攻击示意图


防范措施
     方法一
       对于web站点,将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field),这将帮助网站防止这些攻击。一种类似的方式是在form中包含秘密信息、用户指定的代号作为cookie之外的验证。大致步骤如下:
       1. 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值
       2. 在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token
       3. 在用户点击提交的时候,会带上这两个值向后台发起请求
       4. 后端接受到请求,会做以下几件事件:
                (1) 从 cookie中取出 csrf_token
                (2) 从 表单数据中取出来隐藏的 csrf_token 的值
                (3) 进行对比
       5. 如果比较之后两值一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作


       方法二
       另一个可选的方法是“双提交”cookie。此方法只工作于Ajax请求,但它能够作为无需改变大量form的全局修正方法。如果某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。如果服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域,因为其它域是不能从信任域读取cookie的。与通常的信任想法相反,使用Post代替Get方法并不能提供卓有成效的保护。因为JavaScript能使用伪造的POST请求。尽管如此,那些导致对安全产生“副作用”的请求应该总使用Post方式发送。Post方式不会在web服务器和代理服务器日志中留下数据尾巴,然而Get方式却会留下数据尾巴。



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马