什么是 CSRF 攻击

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
公网NAT网关,每月750个小时 15CU
简介: CSRF(跨站请求伪造)攻击是指攻击者诱导用户点击恶意链接或提交表单,利用用户已登录的身份在目标网站上执行非授权操作,如转账、修改密码等。这种攻击通常通过嵌入恶意代码或链接实现。

CSRF(Cross - Site Request Forgery),中文名称为跨站请求伪造,是一种网络安全攻击方式。

一、攻击原理

  1. 用户认证状态利用
    • 当用户登录一个受信任的网站(比如银行网站)并通过认证后,网站会在用户的浏览器端设置一些身份认证相关的信息,如cookies。这些cookies会在后续用户对该网站的请求中自动发送,以表明用户的身份是已经认证过的。
    • 攻击者利用这一点,构造恶意请求。例如,攻击者创建一个恶意网页,在这个网页中包含一个自动提交的表单,表单的目标是用户已经登录的受信任网站的某个关键功能接口(如转账接口)。
  2. 诱导用户访问恶意页面
    • 攻击者通过各种方式诱使受害者访问这个恶意网页,比如发送带有恶意链接的电子邮件、在社交网络上发布吸引人的链接等。
    • 当用户访问这个恶意网页时,浏览器会自动将用户登录受信任网站的cookies等认证信息发送给受信任网站,因为浏览器无法区分这个请求是用户主动发起的还是被恶意诱导的。这样,恶意请求就会在用户已经认证的状态下被发送到受信任网站,从而执行一些对用户不利的操作,比如转账、修改密码等。

二、举例说明

  1. 假设用户在银行网站(bank.com)登录了自己的账户,此时浏览器保存了银行网站的身份认证cookies。
    • 攻击者制作了一个恶意网站(evil.com),在这个网站的页面中有如下一段HTML代码:
      <form action="https://bank.com/transfer" method="post">
        <input type="hidden" name="toAccount" value="攻击者账户号码">
        <input type="hidden" name="amount" value="1000">
        <input type="submit" value="点击查看精彩内容">
      </form>
      <script>document.forms[0].submit();</script>
      
    • 当用户被诱骗访问evil.com时,页面会自动提交表单。浏览器会把用户在bank.com的认证cookies一起发送给bank.com,使得bank.com以为是用户自己发起的转账请求,从而将1000元转到攻击者账户。

三、防御措施

  1. 使用CSRF令牌(Token)
    • 受信任网站在生成表单或者关键的请求链接时,会生成一个随机的、唯一的CSRF令牌,并将其嵌入到表单或者请求链接中。
    • 当用户提交请求时,服务器会验证这个令牌是否有效。如果请求中没有令牌或者令牌无效,服务器就拒绝该请求。例如,在一个基于Web的应用程序中,当用户访问转账页面时,服务器会生成一个类似于“abcdef123456”的CSRF令牌,将其放在一个隐藏的表单字段中,如<input type="hidden" name="csrf_token" value="abcdef123456">。当用户提交转账请求时,服务器会检查这个令牌是否和之前生成的一致。
  2. 检查请求来源(Referer)
    • 服务器可以检查请求的来源(Referer头信息),确保请求是来自合法的源。不过这种方法有一定的局限性,因为Referer头信息可以被攻击者伪造或者在某些情况下(如用户隐私设置)可能不包含正确的信息。
  3. Same - Site Cookies策略
    • 这是一种设置cookies属性的策略。通过将cookies标记为Same - Site,可以限制cookies只能在同站点请求中发送,从而防止跨站请求伪造。例如,将银行网站的cookies设置为Same - Site = Strict,那么当浏览器发起跨站请求时,就不会发送该银行网站的cookies,从而有效避免CSRF攻击。
相关文章
|
7月前
|
JavaScript 安全 前端开发
js开发:请解释什么是XSS攻击和CSRF攻击,并说明如何防范这些攻击。
XSS和CSRF是两种常见的Web安全威胁。XSS攻击通过注入恶意脚本盗取用户信息或控制账户,防范措施包括输入验证、内容编码、HTTPOnly Cookie和CSP。CSRF攻击则诱使用户执行未经授权操作,防范手段有CSRF Tokens、双重验证、Referer检查和SameSite Cookie属性。开发者应采取这些防御措施并定期进行安全审计以增强应用安全性。
132 0
|
安全 NoSQL Java
互联网并发与安全系列教程(06) - 常见的Web安全漏洞(CSRF攻击)
互联网并发与安全系列教程(06) - 常见的Web安全漏洞(CSRF攻击)
128 0
|
SQL 安全 前端开发
渗透攻击实例-邪恶的CSRF(社会工程学)
渗透攻击实例-邪恶的CSRF(社会工程学)
|
7月前
|
缓存 安全 JavaScript
前端安全:Vue应用中防范XSS和CSRF攻击
【4月更文挑战第23天】本文探讨了在Vue应用中防范XSS和CSRF攻击的重要性。XSS攻击通过注入恶意脚本威胁用户数据,而CSRF则利用用户身份发起非授权请求。防范措施包括:对输入内容转义、使用CSP、选择安全的库;采用Anti-CSRF令牌、同源策略和POST请求对抗CSRF;并实施代码审查、更新依赖及教育团队成员。通过这些实践,可提升Vue应用的安全性,抵御潜在攻击。
1006 0
|
21天前
|
安全 前端开发 JavaScript
什么是 CSRF 攻击?如何启用 CSRF 保护来抵御该攻击?
什么是 CSRF 攻击?如何启用 CSRF 保护来抵御该攻击?
59 5
|
1月前
|
存储 Web App开发 安全
如何防范 CSRF 攻击
CSRF(跨站请求伪造)攻击是一种常见的安全威胁。防范措施包括:使用Anti-CSRF Token、检查HTTP Referer、限制Cookie作用域、采用双重提交Cookie机制等,确保请求的合法性与安全性。
|
1月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
93 4
|
1月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
74 2
|
1月前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
96 3
|
1月前
|
SQL 存储 安全
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
41 0