Checkmarx源代码分析工具将mysql_fetch_array标记为Stored Cross-Site-Scripting攻击..为什么以及如何解决它是否真的存在错误?以下是报告的描述:
abc.php的第1行的方法从mysql_fetch_array元素的数据库中获取数据。然后,该元素的值在没有被正确过滤或编码的情况下流过代码,并最终在abc.php的第1行的方法中显示给用户。这可能会启用存储的跨站点脚本攻击。如何解决这个问题?
答案 0 :(得分:3)
如果没有看到实际的代码流,就无法分辨。
但是,这可能是一个实际的漏洞 - 存储的XSS来自于从数据库中提取不受信任的数据,并将其直接发送到网页输出而不进行任何清理或编码。您的代码极有可能出现此问题。
简而言之,攻击者可以通过将有效但恶意的数据插入数据库(通过常规输入表单)来利用此漏洞。当另一个用户浏览应用程序并访问这些记录时,应用程序将该数据拉出,并将其注入受害者的网页 - 创建脚本注入(也称为跨站点脚本)漏洞。 当然,这允许攻击者通过您的应用程序控制另一个用户的浏览器......
要修复它,只需将所有动态输出编码,无论数据来源如何,然后再将其插入网页。请注意,这必须根据特定的上下文来完成(例如,HTML的HTML编码,HTML属性值的属性编码,用于在PHP中动态创建javascript的JavaScript编码等)。
有关详细信息,请参阅this article on OWASP's wiki。