不只是 huohuo 的 前端安全 面试题

本文探讨了XSS攻击的原理,如何通过用户输入、链接和参数注入恶意代码,以及防范策略如输入过滤、CSRFToken和同源策略。还介绍了CSRF攻击的概念,包括发起方式和防护措施,以及两者在保护数据安全中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是 XSS 攻击?

简而言之,就是页面被注入了恶意代码。

攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如CookieSessionID等,进而危害数据安全。

本质:恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。而由于直接在用户的终端执行,恶意代码能够直接获取用户的信息,或者利用这些信息冒充用户向网站发起攻击者定义的请求。

如何进行的 XSS 攻击?

有哪些地方可以被攻击呢?

  • 用户输入片段
  • 第三方链接
  • URL参数
  • POST参数
  • Referer(可能来自不可信来源)
  • Cookie(可能来自其他子域注入)

攻击方式 1

  1. 攻击者构造出特殊的URL,其中包含恶意代码。
  2. 用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从URL中取出,拼接在HTML中返回给浏览器。
  3. 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
  4. 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

常见于涉及数据保存的网页功能,如论坛发帖、评论私信。

攻击方式 2

  1. 攻击者将恶意代码提交到目标网站的数据库中。
  2. 用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在HTML中返回给浏览器。
  3. 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
  4. 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

常见于网站搜索、页面跳转

攻击方式 3

  1. 攻击者构造出特殊的URL,其中包含恶意代码。
  2. 用户打开带有恶意代码的URL
  3. 用户浏览器接收到响应后解析执行,前端JavaScript取出URL中的恶意代码并执行。
  4. 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

JS 自身安全漏洞

怎么防范 XSS 攻击?

防范要点:攻击者提交的恶意代码、浏览器执行的恶意代码。

  • 输入过滤
  • 代码和数据分离(纯前端渲染)
  • 避免拼接HTML,同时对HTML进行充分转义
  • 使用某些DOM API时不要把不可信数据作为HTML插入页面
  • 输入内容长度控制(增加XSS攻击难度)
  • 使用CSP防范
  • 验证码:防止脚本冒充用户提交危险操作。
  • HTTP-only Cookie: 禁止JavaScript读取某些敏感Cookie,攻击者完成XSS注入后也无法窃取此Cookie
  • 主动检测XSS漏洞(手动攻击、扫描工具)

CSRF 攻击

什么是 CSRF 攻击?

跨站请求伪造(Cross-site Request Forgery)。攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求(通常是跨域)。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

特征:

  • 攻击一般发起在第三方网站,而不是被攻击的网站(被攻击的网站无法防止攻击发生)。
  • 攻击者利用受害者在被攻击网站的登录凭证,冒充受害者做出提交操作(不是直接窃取数据)。
  • 整个过程攻击者并不能获取到受害者的登录凭证,仅仅是“冒用”。
  • 跨站请求可以用各种方式:图片 URL、超链接、CORS、Form 提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪。

如何进行的 CSRF 攻击?

CSRF 攻击典例

  • 受害者登录a.com,并保留了登录凭证(Cookie)。
  • 攻击者引诱受害者访问了b.com
  • b.coma.com发送了一个请求:a.com/act=xx。浏览器会默认携带a.comCookie
  • a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
  • a.com以受害者的名义执行了act=xx
  • 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作

常见攻击方式

  • HTTPGet请求
  • 表单提交(POST
  • 点击诱导链接

怎么防范 CSRF 攻击?

CSRF通常从第三方网站发起,被攻击的网站无法防止攻击发生,只能通过增强自己网站针对CSRF的防护能力来提升安全性。

前面说到CSRF通常发生在第三方域名?

So,阻止不明外域访问

  • 同源检测
  • Samesite Cookie(不成熟)

整个攻击过程不能获取到 Cookie 等信息,只是“冒用”?

So,做提交操作时附加本域信息

  • CSRF Token:要求所有的用户请求都携带一个CSRF攻击者无法获取到的Token。服务器通过校验请求是否携带正确的Token,来把正常的请求和攻击的请求区分开,也可以防范CSRF的攻击(服务器压力大)
  • 双重Cookie验证(服务器压力小,易于实施,但安全性没有CSRF Token高)

其他防范措施

  • CSRF测试
  • CSRF监控
  • 尽量少使用网页版邮件
  • 尽量不打开可疑链接(必要时用不常用的浏览器打开)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值