【发布时间】:2020-05-02 10:13:18
【问题描述】:
我在一个我想要处理的 html 输入字段 (<input type="text">) 中有一个 XSS 漏洞。 html 输入用于社交媒体网址(例如 Facebook、Linkedin、Jabber、Skype 等),后来显示为:<a href=link>link</a>。
没有验证,因此用户可以输入他们想要的任何内容。然后,当有人点击应用程序中的链接时,如果有危险的javascript,它将被执行。我决定做的是在输出中转义这些 url,这样它们就不会在点击时执行任何 javascript。我正在使用 jsf 作为视图,但找不到可以帮助我正确修复它的工具。
首先,我想在保存用户输入之前进行一些基本的 url 验证,但由于 url 的复杂性(链接可能不以协议开头,它可以是任何名称,因为某些社交媒体将具有默认地址前缀(方案)在系统中,对于前Skype:对于Skype,所以网址可能是:linkedin.com/in/name 或 asdqwe)我不得不放弃这个想法。
我试图做的是用 StringEscapeUtils.escapeJavaScript 方法从 apache.commons.lang 转义这些 url,但它并不能阻止每种类型的危险代码,例如它不会阻止输入:javascript:alert(0); 所以我正在寻找对于可以让我转义这些 url 以完全或几乎完全防止 xss 的工具。感谢您的帮助。
【问题讨论】:
-
“没有验证”.. 我建议添加验证。见stackoverflow.com/questions/6047866/…
-
如果你不想验证,这个问题与jsf无关。 (转义 url 不是 jsf 有的)