What is `XSS` does?

跨站脚本攻击(Cross-Site Scripting,XSS)是一种针对网站应用程序的安全漏洞,允许攻击者将恶意脚本注入到其他用户查看的网页中。当这些用户访问受感染的页面时,他们的浏览器会执行这些恶意脚本,导致各种安全问题的发生,如窃取用户的会话信息cookie其他敏感数据,以及对用户账户进行未经授权的操作等。

根据攻击方式的不同,XSS主要分为以下几种类型:
反射型(非持久型)XSS: 攻击通过诱使用户点击包含恶意脚本参数的链接或提交包含恶意代码的数据表单来实施。每次攻击都需要用户主动触发,并且攻击代码不会存储在服务器上。

csharp 复制代码
#正常URL:
http://example.com/search?q=query 

#恶意链接如:
http://example.com/search?q=<script>alert('XSS');</script> 
# 当用户点击这个链接时,服务器接收到请求后会直接在返回的HTML页面中显示查询参数,
# 浏览器执行了包含在查询字符串中的恶意JavaScript代码,从而弹出警告框。

存储型(持久型)XSS: 攻击者将恶意脚本提交到易受攻击的网站,该脚本被存储在服务器端,比如在论坛帖子、评论区或者个人资料页面中。之后,任何访问此存储内容的用户都会触发恶意脚本执行。

csharp 复制代码
# 在一个允许用户发布评论的论坛上,攻击者提交了一条包含恶意脚本的评论:
<script>alert('Malicious Script');</script> 

# 服务器端没有对用户输入进行过滤或转义就将这条评论存入数据库。
# 当其他用户访问该页面查看评论时,他们的浏览器加载并执行了这段恶意脚本,导致弹出警告框。

DOM型XSS: 在这种类型的攻击中,恶意脚本不经过服务器响应直接注入,而是通过客户端JavaScript动态修改DOM结构时引入了不受信任的数据。这意味着恶意代码存在于网页本身的动态交互过程中。
Further Reading : What is DOM注入攻击 does?

基于HTTP头部的XSS 或其他特殊变种: 这些攻击可能利用的是HTTP响应头部或者其他不太常见的入口点来注入恶意脚本。

csharp 复制代码
# 假设一个Web应用根据用户的自定义设置生成 Set-Cookie HTTP响应头,而这些设置未经验证就写入了响应头:
res.setHeader('Set-Cookie', 'theme=' + userTheme);

# 如果用户设置了一个包含恶意脚本的主题名称,如 ";alert('Cookie Header XSS');"
# 则当浏览器接收到这个响应头并设置cookie时,就会触发恶意脚本的执行。
# 不过现代浏览器通常会对HTTP头部的内容进行严格的解析和限制,因此这种攻击在现实中很难实施成功。

为了防御XSS攻击,开发人员需要确保所有从不可信来源接收的数据在输出到HTML文档时都进行了适当的转义净化处理,以防止其作为可执行脚本运行。同时,使用HTTP-only cookies可以防止攻击者通过XSS获取和利用用户的cookie信息。

相关推荐
京东云开发者17 分钟前
全球首个!京东全栈开源JoyAI-VL-Interaction,让大模型从“一问一答”走向“边看边说”
前端
京东云开发者17 分钟前
正式上线!京东云AI智能渗透测试服务
前端
AprChell21 分钟前
低代码设计器和低代码设计引擎架构综述
前端·vue.js·低代码
Hilaku27 分钟前
Node.js 还能再战十年?给你一个不换引擎的理由
前端·javascript·程序员
颜进强35 分钟前
AI性能参数-截断、延迟与流式输出
前端·后端·ai编程
spmcor42 分钟前
React 架构师之路:Next.js 全栈革命(第八篇)
前端·react.js
英勇无比的消炎药42 分钟前
TinyRobot 源码深度分析:OpenTiny 的 AI 对话组件库
前端·vue.js·github
假如让我当三天老蒯44 分钟前
React基础、进阶(学习用)
前端·react.js·面试
风骏时光牛马1 小时前
HTML十大经典实战代码案例合集
前端
weedsfly1 小时前
前端必知必会:从 IIFE 到 ESM,模块化到底在解决什么?
前端·javascript