CSRF 攻击

什么是 CSRF ?

  • CSRF(Cross-Site Request Forgery,跨站请求伪造)攻击,是一种常见的网络攻击方式,它利用用户在已登录网站的凭证(如 Cookie、Session 等)向第三方网站发送非授权的请求。这种攻击之所以有效,是因为浏览器会自动携带用户在 A 网站的认证信息去访问 B 网站,如果 B 网站没有做好防护措施,就会误以为该请求是用户主动发起的并予以执行,从而可能执行恶意操作,如修改用户数据、进行非法转账等。

CSRF 攻击的基本流程:

  1. 用户登录: 用户登录到受信任的网站 A,并在本地生成了认证信息(Cookie)。
  2. 恶意链接构造: 攻击者构造一个包含恶意操作的 URL,该 URL 针对网站 B,且该操作需要用户已经登录的状态才能执行。
  3. 诱导用户点击: 攻击者通过邮件、社交媒体、即时消息等方式诱使用户点击这个恶意链接。
  4. 浏览器发送请求: 用户在不知情的情况下,浏览器带着在 A 网站的认证信息自动向 B 网站发送了请求。
  5. 恶意操作执行: 如果 B 网站没有验证请求是否由用户自己发起,那么它可能会误以为这是用户的真实意图,从而执行恶意操作。

如何确定一个接口地址有没有 CSRF 漏洞?

  • 拿到接口地址,抓取到接口的数据,在三方网站中再次发送请求,看是否能成功。如果成功,就可以确定存在 CSRF 漏洞。

如何防御 CSRF 漏洞?

  1. 使用安全的 HTTP 方法:对于修改数据的请求,使用 POST 而不是 GET。GET 请求的结果可以被缓存,并且可以被浏览器预加载,这会增加 CSRF 攻击的风险。

  2. 敏感操作增加二次确认:对于涉及重要操作的请求,例如转账、删除账户等,可以要求用户进行二次确认,以降低误操作的风险。

  3. 同源策略:确保网站的关键操作只能在同一个域名下执行。这样即使攻击者能够构造恶意请求,也无法在用户不知情的情况下执行它们。

  4. 限制敏感操作:对于涉及敏感操作(如更改密码、删除账户等)的请求,应该要求用户输入密码或进行其他形式的身份验证,以确保请求的合法性。

  5. 使用 CSRF 令牌:服务器在每个敏感操作的表单中嵌入一个随机生成的、一次性的 CSRF 令牌(Token)。提交表单时,此令牌也会一并提交,服务器验证提交的令牌与存储在会话中的令牌是否一致,确保请求的合法性。

  6. 验证 HTTP Referer 或 Origin 头部:虽然这个方法有局限性,但在某些情况下,检查请求的 Referer 或 Origin 头部可以作为一种辅助手段,确认请求是否来自可信赖的源。但是要注意,攻击者可能伪造这些头部,因此不能单独依赖此方法。

CSRF 和 XSS 的区别?

CSRF(Cross-Site Request Forgery):

  • 攻击目的:CSRF 的主要目的是欺骗已登录用户在不知情的情况下执行攻击者期望的操作,如转账、更改密码等。
  • 实现方式:攻击者通过诱骗用户点击恶意链接或访问嵌入恶意代码的网页,利用用户浏览器中对目标网站的有效会话(Cookie)发起非授权请求。
  • 用户状态要求:为了成功,CSRF 通常需要用户已经在目标网站上登录,并拥有有效的会话信息。
  • 攻击特征:相对隐蔽,用户往往不易察觉,因为请求看起来像是正常浏览的一部分。
  • 防护措施:通常采用 Token 验证、Referer 检查、SameSite Cookie 属性等方法。

XSS(Cross-Site Scripting):

  • 攻击目的:XSS 攻击旨在通过注入恶意脚本到网页中,当用户浏览该页面时,恶意脚本将在用户的浏览器上执行,进而盗取用户信息、操纵页面内容或重定向用户等。
  • 实现方式:攻击者通过各种手段将恶意脚本嵌入到网站的动态内容中,如评论区、搜索框等用户可输入的地方。
  • 用户状态要求:XSS 攻击不强制要求用户登录目标网站,只要用户访问了包含恶意脚本的页面即可。
  • 攻击特征:XSS 攻击可能更为直观,有时用户可以观察到页面异常,如弹出窗口、页面篡改等。
  • 防护措施:主要包括输入过滤和转义、使用 HTTP Only Cookie 防止 JavaScript 访问、实施内容安全策略(CSP)等。

总结来说,CSRF 侧重于利用用户的权限执行恶意操作,而 XSS 则侧重于通过注入脚本控制用户的浏览器环境。两者都需要网站开发者采取相应的安全措施来防范。

常见的 CSRF 手段:

  1. 构造恶意链接:攻击者可以在恶意网站上创建一个包含恶意请求的链接,并诱使受害者点击该链接。当受害者登录到目标网站时,浏览器会自动发送包含受害者身份验证信息的请求,从而执行恶意操作。

  2. 钓鱼邮件:攻击者可以通过钓鱼邮件或社交工程技术诱使用户点击包含 CSRF 攻击的链接。这些邮件可能会伪装成来自可信任机构或朋友的邮件,以增加受害者的信任度。

  3. 跨站脚本(XSS)利用:如果目标网站存在 XSS 漏洞,攻击者可以利用该漏洞注入恶意脚本,并将其触发以执行 CSRF 攻击。这种攻击通常会利用受害者的会话来执行恶意操作。

  4. 社交工程:攻击者可以利用社交工程技术欺骗用户在目标网站上执行特定的操作,例如点击一个看似无害的按钮或链接,而实际上这些操作会执行恶意请求。

  5. 利用第三方应用程序漏洞:如果目标网站与第三方应用程序集成,并且存在漏洞,则攻击者可以通过利用这些漏洞来执行 CSRF 攻击。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值