-4

Checkmarx源代码分析工具将mysql_fetch_array标记为存储跨站点脚本攻击。如果是真正的错误,为什么以及如何解决?以下是报告的描述:

abc.php 第 1 行的方法从数据库中获取 mysql_fetch_array 元素的数据。然后,该元素的值在没有经过适当过滤或编码的情况下流经代码,并最终在 abc.php 的第 1 行的方法中显示给用户。这可能会启用存储的跨站点脚本攻击。如何解决这个问题?

4

1 回答 1

3

如果没有看到您的实际代码流,就无法判断。

然而,这很可能是一个实际的漏洞——存储型 XSS 是从数据库中提取不受信任的数据,并将其直接发送到网页输出而无需任何清理或编码。您的代码很可能存在此问题。

简而言之,攻击者可以通过将有效但恶意的数据插入数据库(通过您的常规输入表单)来利用这一点。当另一个用户浏览应用程序并访问这些记录时,应用程序会提取该数据并将其注入到受害者的网页中 - 创建脚本注入(也称为跨站点脚本)漏洞。
当然,这允许攻击者通过您的应用程序控制另一个用户的浏览器...

要修复它,只需对所有动态输出进行编码,无论数据来源如何,然后再将其插入网页。请注意,这必须根据特定的上下文来完成(例如,HTML 的 HTML 编码、HTML 属性值的属性编码、用于在 PHP 中动态创建 javascript 的 JavaScript 编码等)

有关更多信息,请参阅OWASP wiki 上的这篇文章

于 2016-10-06T11:10:46.590 回答