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);
完全相同吗?
答案 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等