如何使用OWASP检测Java中的XSS
我现在正在处理这件事,XSS 我需要检测字符串是否包含XSS。为了解决这个问题,我用了这个。这是我正在使用的代码:如何使用OWASP检测Java中的XSS,java,security,jsoup,xss,owasp,Java,Security,Jsoup,Xss,Owasp,我现在正在处理这件事,XSS 我需要检测字符串是否包含XSS。为了解决这个问题,我用了这个。这是我正在使用的代码: public static boolean containsXSS(String value) { if (StringUtils.isEmpty(value)) { return false; } String stripXss = stripXSS(value); return !value.equals(stripXss); }
public static boolean containsXSS(String value) {
if (StringUtils.isEmpty(value)) {
return false;
}
String stripXss = stripXSS(value);
return !value.equals(stripXss);
}
public static String stripXSS(String value) {
if (StringUtils.isBlank(value))
return value;
// Use the ESAPI library to avoid encoded attacks.
Encoder encoder = ESAPI.encoder();
value = encoder.canonicalize(value);
// Avoid null characters
value = value.replaceAll("\0", "");
// Clean out HTML
Document.OutputSettings outputSettings = new Document.OutputSettings();
outputSettings.escapeMode(Entities.EscapeMode.xhtml);
outputSettings.prettyPrint(false);
value = Jsoup.clean(value, "", Whitelist.none(), outputSettings);
return value;
}
使用上面的代码,我确实成功地捕捉到了如下内容:alert('xss')
我的问题是,我将以下字符串标识为包含XSS,尽管它不是:
{“项目”:5}
这是因为jsoup.clean将其转换为{“item”:5}
我试图解决这个问题,但没有成功。
这让我想知道我的算法是否完全错误(如果是,我在哪里可以找到检测XSS的算法),也许我不需要与原始字符串进行比较
如果你能帮助我,我将非常感激
谢谢您无法检测字符串是否包含XSS。XSS是输出问题,而不是输入问题。数据在一个上下文中是良性的,在另一个上下文中可能导致恶意行为
无法检测字符串是否包含XSS。XSS是输出问题,而不是输入问题。数据在一个上下文中是良性的,在另一个上下文中可能导致恶意行为
您无法“检测字符串是否包含XSS”。正确转义您的输出,XSS将不会成为问题。Owasp提供了消毒器,请使用这些方法如何正确转义?不是有个惯例吗??我应该只使用apache.StringEscapeUtils.escapeHtml吗?您不能“检测字符串是否包含XSS”。正确转义您的输出,XSS将不会成为问题。Owasp提供了消毒器,请使用这些方法如何正确转义?不是有个惯例吗??我应该只使用apache.StringEscapeUtils.escapeHtml吗?包含有关OWASP plus提供的消毒剂的信息链接到您指定的备忘单包含有关OWASP plus提供的消毒剂的信息链接到您指定的备忘单