前端安全漏洞之 CSRF

前端安全漏洞之 CSRF

  • 一、概念
  • 二、特点
  • 三、示例
  • 四、防范
  • 五、其他

一、概念

CRSF(Cross-site-request-forgery)是跨站请求伪造。顾名思义就是伪造他人的身份去发送请求。

二、特点

  1. CRSF 攻击需要取得他人身份(cookie 信息)。
  2. CRSF 攻击是利用网站对身份的信任。
  3. CRSF 攻击是利用他人的浏览器发送请求给目标站点。

三、示例

故事:老王经过登录之后浏览 A 网站,A 网站就保留着老王的 cookie 信息,这时候老王在 A 网站看到一个链接,出于好奇心,老王点了进去,访问了 B 网站,殊不知,B 网站是黑客小黑留下的带有恶意请求的站点。过了会儿,老王收到短信,您的个人账户已扣款100万,老王吓得跳了起来,这是怎么回事?

分析:代码实现以上攻击过程。

  • 老王在浏览器中输入用户名和密码,登陆到 A 网站。
  • 服务器接收到 A 网站的登陆请求后,验证用户名和密码,验证通过之后生成 session 并返回给浏览器。
  • 浏览器保存 session 信息在 cookie 中。
<script>
   var session = 'nvenengepnegn3r34';
   //session 应该是服务器返回的,这里做一个模拟
   document.cookie="session = "+session;
</script>
  • 老王在浏览 A 网站时看到一个链接点了进去,进入到了 B 网站,B 网站是小黑故意留下的,其内容为

<html lang="en">
<head>
    <meta charset="utf-8"/>
    <title>React Apptitle>
head>
<body>
<img src="www.123.com?username=小黑&money=1000000" alt="">
body>
html>
  • 老王点击了此链接之后就自动向服务器发送了请求,即小黑恶意制造的 B 网站向服务器发送了转账到小黑帐户的请求。

  • 服务器在接收到请求时,会验证浏览器的 session 信息,因为老王刚刚才登陆过,session 还没过期,所以验证通过,于是直接响应了请求。

  • 100 万成了小黑的囊中之物。

四、防范

理解了跨站请求伪造之后,应该如何防范呢?

  1. 开发者层面
  • CRSF 最容易攻击的是 GET请求,所以尽量使用 POST 请求;
  • 在请求地址中添加 token 验证;
  • 验证 HTTP Referer 字段,而不是仅仅验证 session;
  • 在HTTP 请求头中加入 token。
  1. 用户层面
  • 不要随意点击未知的链接或打开未知的图片,图片的 src 属性也可以发送请求;
  • 在打开其他站点前先退出登录或清掉浏览器的 cookie 信息。

五、其他

在前端领域中与 CSRF 漏洞类似的还有 XSS 漏洞,想要了解的可以参考前端安全漏洞之 XSS 、前端安全漏洞 XSS 与 CSRF 异同。

前端安全漏洞之 CSRF_第1张图片

你可能感兴趣的:(前端安全漏洞)