gpt4 book ai didi

java - JSF 中的转义 url 以防止 XSS

转载 作者:行者123 更新时间:2023-12-02 01:08:05 26 4
gpt4 key购买 nike

我在一个 html 输入字段 ( <input type="text"> ) 中存在一个 XSS 漏洞,我想要处理该漏洞。 html 输入用于社交媒体 URL(例如 Facebook、Linkedin、Jabber、Skype 等),稍后显示为:<a href=link>link</a> .

没有验证,因此用户可以输入他们想要的任何内容。然后,当有人点击应用程序中的链接时,如果存在危险的javascript,它将被执行。我决定做的是在输出中转义这些 url,这样它们就不会在单击时执行任何 javascript。我使用 jsf 作为 View ,但找不到可以帮助我正确修复它的工具。

首先,我想在保存用户输入之前进行一些基本的网址验证,但由于网址的复杂性(链接可能不以协议(protocol)开头,并且可以是任何名称,因为某些社交媒体将具有默认地址前缀(方案)在系统中,对于 ex Skype:对于 Skype,因此网址可能类似于:linkedin.com/in/name 或 asdqwe)我不得不放弃这个想法。

我试图做的是使用方法 StringEscapeUtils.escapeJavaScript 转义这些网址来自apache.commons.lang ,但它并不能阻止所有类型的危险代码,例如它不会阻止输入: javascript:alert(0);所以我正在寻找一个可以让我转义这些网址以完全或几乎完全防止 xss 的工具。感谢您的帮助。

最佳答案

实际上,您应该通过 UrlValidator 验证 URL 格式的输入确保交互式内容(在您的情况下是超链接)与您的格式匹配并且可以安全地单击。下面的例子:

使用有效方案“http”和“https”构造一个 UrlValidator。

String[] schemes = {"http","https"}.
UrlValidator urlValidator = new UrlValidator(schemes);
if (urlValidator.isValid("https://facebook.com")) {
System.out.println("url is valid");
} else {
System.out.println("url is invalid");
}

打印出“url 有效”

关于java - JSF 中的转义 url 以防止 XSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59754900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com