什么是 CSRF 攻击

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 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攻击。
相关文章
|
6月前
|
安全 数据安全/隐私保护
31、CSRF漏洞介绍
31、CSRF漏洞介绍
40 0
|
1天前
|
存储 Web App开发 安全
如何防范 CSRF 攻击
CSRF(跨站请求伪造)攻击是一种常见的安全威胁。防范措施包括:使用Anti-CSRF Token、检查HTTP Referer、限制Cookie作用域、采用双重提交Cookie机制等,确保请求的合法性与安全性。
|
3天前
|
SQL 存储 安全
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
9 0
|
4月前
|
运维 安全 Java
什么是 CSRF?如何防止 CSRF 攻击?
CSRF 攻击是一种常见且危险的 Web 安全漏洞,攻击者可以通过伪造用户请求,执行恶意操作,作为程序员,为了防御 CSRF 攻击,常见的策略包括使用 CSRF Token、检查 Referer 或 Origin 头、设置 SameSite Cookie 属性以及双重提交 Cookie。 因为程序员对于 CSRF 攻击可以做的事情还是很有限,所以,承担主要责任的是安全部门或者运维部门,但是作为程序员,我们需要具备这些安全意识,在安全等级比较高的需求中也需要把这些安全因素考虑在内。
|
4月前
|
前端开发 安全 JavaScript
CSRF 攻击是什么?如何防范?
CSRF 攻击是什么?如何防范?
188 0
|
5月前
|
安全 前端开发 JavaScript
详细解读CSRF漏洞详解
详细解读CSRF漏洞详解
67 0
|
安全 PHP 开发者
CSRF 攻击的防范措施
CSRF 攻击的防范措施
|
6月前
|
安全 前端开发 Java
什么是 CSRF 攻击?
什么是 CSRF 攻击?
|
存储 安全 PHP
CSRF 攻击
本文主要介绍了什么是 CSRF 攻击,以及如何防御 CSRF 攻击
234 2
|
安全 JavaScript 前端开发
XSS及CSRF攻击防御
XSS是什么? XSS即跨站脚本攻击,是由于处理不好用户的输入,导致恶意脚本在浏览器中执行
137 0