【发布时间】:2021-12-16 13:46:20
【问题描述】:
我对我一直在工作的网站进行了安全审核。审计表明,我的一个名为 backurl 的参数在我的 jsp 文件中没有得到足够的保护。这个url放在一个按钮的href里面,这个按钮可以让用户回到上一页。
所以我所做的是使用 owasp 库和函数“forHTMLAttribute”来保护它。它给出了这样的东西:
<a class="float_left button" href="${e:forHtmlAttribute(param.backUrl)}">Retour</a>
但是,第二次审核表明,通过将参数的值替换为:
javascript:eval(document%5b%27location%27%5d%5b%27hash%27%5d.substring(1))#alert(1234)
将执行 javascript 代码并显示警报,仅在单击按钮时。
他们说我可以做的是硬编码 url 前面的主机名值,但我真的不明白这将如何帮助解决问题。我觉得无论我做什么,解决一个 XSS 漏洞只会创建一个新漏洞。
有人可以帮我解决这个问题吗?至少要了解正在发生的事情以及在哪里查看。
非常感谢。
【问题讨论】:
-
如果您使用参数作为 URL,问题不在于 encoding URL,而在于它是第一个外部提供的 URL地方。它可以是某种关键字,而不是原始 URL,您可以在自己的服务器上将其转换为 URL 并将该值提供给 JSP 页面。
标签: javascript java html jsp xss