存储型跨站脚本 (XSS)

medium Web App Scanning 插件 ID 113250

简介

存储型跨站脚本 (XSS)

描述

现代 Web 应用程序广泛使用客户端脚本。此类应用程序会执行从简单的功能(例如文本格式化)到完全操纵客户端数据和操作系统交互等操作。

跨站脚本 (XSS) 允许客户端将脚本注入请求中,并可让服务器在响应中将脚本返回给客户端。之所以发生这种情况,是因为应用程序正在获取不受信任的数据(在此示例中,数据来自客户端),并重复使用这些数据而未执行任何验证或审查。

如果立即返回注入的脚本,这就称为反射型 XSS。如果注入的脚本由服务器存储,并返回到访问受影响页面的任何客户端,则这称为持久性 XSS(也称为存储型 XSS)。

扫描程序已发现,可以将脚本内容直接插入到 HTML 元素内容中。

解决方案

如要修补 XSS 漏洞,切勿在 HTML 页面的代码中使用不受信任或未经筛选的数据。
不受信任的数据不仅可能来自客户端,还可能来自第三方或先前上传的文件等。
筛选不受信任的数据,这通常涉及将特殊字符转换为其 HTML 实体编码的对应项(但也存在其他方法,请参阅“参考”)。这些特殊字符包括:
* `&` * `<` * `>` * `'` * `'` * `/`
HTML 实体编码的一个示例正在将 `<` 转换为 `<`。
尽管可以筛选不受信任的输入,但 HTML 页面中有五处位置永远不应放置不受信任的输入(即使已被筛选):
1. 直接在脚本中。2. HTML 注释内部。3. 在属性名称中。4. 在标签名称中。5. 直接在 CSS 中。
其中每个位置都有自己的转义和筛选形式。
_由于许多浏览器都尝试实施 XSS 保护,因此应使用多种不同的浏览器和浏览器版本对此发现结果进行手动验证。_

另见

http://projects.webappsec.org/w/page/13246920/Cross%20Site%20Scripting

https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

插件详情

严重性: Medium

ID: 113250

类型: remote

发布时间: 2022/6/28

最近更新时间: 2023/2/22

扫描模板: full, pci, scan

风险信息

VPR

风险因素: Medium

分数: 4.2

CVSS v2

风险因素: Medium

基本分数: 5.8

矢量: CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:N

CVSS 分数来源: Tenable

CVSS v3

风险因素: Medium

基本分数: 6.1

矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

CVSS 分数来源: Tenable

参考资料信息