网易web安全:课后问题-CSRF

什么是CSRF

利用用户已经登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作
在这里插入图片描述

CSRF攻击原理

  1. 用户登录web网站,此时浏览器含有用户登录信息
  2. 黑客构造恶意网站
  3. 用户主动访问恶意网页,转账到黑客用户。
    在这里插入图片描述
    真正完成转账的关键在于: 浏览器cookie存放有用户的登录凭证,当浏览器发送请求时,会继续带上已有的cookie, 而受害网站本身也存在csrf漏洞,如无token校验,无法区别请求是用户还是攻击者
    在这里插入图片描述
    恶意网页的构造技巧: 含有攻击的网页不会显示任何内容,只会在加载的时候提交新的请求,实现转账操作
    在这里插入图片描述

csrf的防御

Referer头检测法

Referer标识当前请求的来源页面,浏览器访问时除了自动带上Cookie还会自动带上Referer,所以服务端可以检测Referer头是否本网站页面来决定是否响应请求。

Referer是浏览器自动带上的,基于认为浏览器没有相关漏洞的前提下,我们可以认为攻击者是没法伪造Referer头的,也就是检测Referer头的方法是可靠的。

但该方式有时会不受认可,一是因为浏览器是可以设置禁止发送Referer头的,如果使用该方式那么禁止Referer头的浏览将无法正常使用,这可能会降低用户使用体验。二是因为由于移动端的崛起当下流行前后端分离app和web共用一套后端代码,但app是不会自动带Referer头的,如果使用该方式app端不好处理。

token检测法

当前主流的框架为了预防这种攻击,都是采用TOKEN机制。也就是说当用户与服务端进行交互的时候,传递一个加密字符串到服务端,服务端来检测这个字符串是否是合法的,如果不合法就有可能是黑客伪造用户信息进行请求的。

那么这个加密字符串是怎么生成的那?加密字符串是由后端程序生成,然后赋值到页面之上。一般是由当前控制器,方法,密钥,时间组合在一起加密而成。传递到服务端以后,服务端重新生成一遍,如果一致就是合法的,否则就是不合法的。
如上面的转账提交操作,如果采用Token校验,需要用户先去访问转账页面,正常服务器返回转账页面并返回一个与页面对应Token, 用户在填写完转账信息提交时候需要带上Token信息,这样服务器就知道这个转账申请是不是是由自己发送的。因为CSRF中攻击者是直接提交转账申请,并没有前面访问转账页面获取Token的过程。

扩展:那为什么现在的转账申请还需要验证码或短信校验的操作?
原因是,既然攻击者可以伪造转账申请提交页面,完全有可能通过伪造一序列的页面完成访问转账页面生成Token,并提交转账申请的操作。这个时候,如果服务器端通过短信校验的方式呢,用户一收到短信,就知道自己账号存在泄密风险了。就可能将这些伪造页面给戳破了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值