为什么/如何`value =“javascript:alert(1)”`被认为是OWASP的ZAP工具中的XSS漏洞?

时间:2013-05-17 15:14:53

标签: php javascript xss owasp

OWASP的ZAP结果对于消除我网站的易受攻击的部分非常有用。

但是,我发现了许多我无法修复的结果。例如,其中一个get参数将javascript:alert(1);放入变量中。然后,PHP在隐藏元素的value属性中输出此变量。所以最终的HTML看起来像:

<input type="hidden" name="someName" id="someID" value="javascript:alert(1);"/>

此值通常用于使用JavaScript填充下拉列表。如果它为1则显示可选搜索过滤器,如果为0则不显示任何内容。所以它只用于失败的字符串比较。

我认为没有办法利用它,警报不像ZAP向我展示的其他攻击那样运行。输出被编码,因此它们无法通过像先前发现的攻击一样"/>提前结束引号或元素来注入HTML,因为这些字符成为它们的HTML实体对应物。

这只是ZAP与页面源中输入字符串匹配的误报,因为编码javascript:alert(1);仍然与javascript:alert(1);完全相同吗?

3 个答案:

答案 0 :(得分:1)

是的,OWASP的ZAP试图在您的网站上查找漏洞,并且它会自动运行。

如果您将任何部分代码添加到您的网站中,那么该网站会自动被视为易受攻击。

如果您的网站只接受&#34; 0&#34;或&#34; 1&#34;作为隐藏输入的值,并且不会在任何地方保存或提示值(甚至不是cookie),这不是安全漏洞,而且您是安全的。

答案 1 :(得分:1)

此漏洞意味着ZAP设法将任意代码插入到该输入字段中。这意味着您很可能无法在应用中的某处验证用户输入。

您应该更加小心生成该输入字段,并确保用于生成它的GET参数相应地进行验证。

请记住,安全起见比抱歉更好(即让您的应用遭到入侵)。

答案 2 :(得分:1)

您的HTML对我来说很安全。但是,请考虑类似的情况:

<a href="javascript:alert(1);">test</a>

这将生成一个将执行JavaScript的链接。可能是ZAP要格外小心,以便这样的案例得到回应。

对于这种特定情况,您应该将用户提供的链接中允许的URL方案列入白名单。例如,只允许http,https,mailto等

相关问题