CSRF是什么CSRF全称为跨站请求伪造攻击的原理
优采云 发布时间: 2021-08-03 04:23CSRF是什么CSRF全称为跨站请求伪造攻击的原理
什么是一、CSRF
CSRF全称为Cross-site request forgery(Cross-site request forgery),是一种网络攻击方式,也称为一键攻击或会话骑行。
二、CSRF 攻击原理
CSRF 攻击利用网站 对用户网页浏览器的信任,劫持用户当前登录的网页应用,执行用户不想要的操作。
三、CSRF 攻击示例
角色:
过程:
用户登录、浏览并信任官方网站WebA。同时WebA通过用户验证,在用户浏览器中生成cookie。
第一步
攻击者WebB通过在WebA中添加图片链接诱使用户访问网站WebB。
第二步
用户User被诱导访问WebB后,WebB会使用User的浏览器访问第三方网站WebA并发出操作请求。
第三步
用户浏览器根据WebB的请求,使用第一步生成的cookie访问WebA。
第四步
网站WebA 接收来自用户浏览器的请求。 WebA 无法判断请求是从哪里发出的。由于浏览器在访问时携带了用户的cookie,WebA会响应浏览器的请求。这样攻击网站WebB就达到了模拟用户操作的目的。
第五步
四、CSRF 攻击防护
以上简单介绍了CSRF攻击的原理,接下来介绍几种防御CSRF攻击的方法。
使用 JavaScript 发起 AJAX 请求仅限于跨域,不能通过简单的形式发送 JSON。因此,只接收JSON就可以避免CSRF攻击。
根据HTTP协议,HTTP头中有一个字段叫做Referer,记录了HTTP请求的源地址。通常情况下,访问安全受限页面的请求来自同一个网站。比如用户User想在网站WebA转账,那么User
必须先登录WabA,然后点击页面按钮启动转会活动
此时,转账请求的Referer值为转账按钮所在页面的URL。如果黑客想对bank网站实施CSRF攻击,只能在自己的网站中构造请求。当用户通过黑客的网站向WebA发送请求时,请求的Referer就是黑客的网站。
因此,为了防御CSRF攻击,网站WebA只需要验证每个传输请求的Referer值即可。如果是网站WebA的URL开头的域名,则表示请求来自WebA自己的请求。是合法的。如果Referer是另一个网站,可能是黑客的CSRF攻击,请求被拒绝。
CSRF 攻击之所以成功,是因为黑客可以完全伪造用户的请求。请求中的所有用户认证信息都在cookie中,因此黑客可以在不知道认证信息的情况下直接使用该用户。拥有cookies以通过安全验证。抵抗CSRF,关键是在请求中收录黑客无法伪造的信息,而cookie中不存在该信息。可以在HTTP请求中添加一个随机生成的token作为参数,在服务器端建立*敏*感*词*来验证token。如果请求中没有token或者token的内容不正确,可能是因为CSRF攻击导致请求被拒绝。 .
这个方法比检查Referer更安全。令牌可以在用户登录后生成并放入会话中,然后每次请求时从会话中取出令牌,并与请求中的令牌进行比较。
参考链接:CSRF 攻击的对策