我現在正在處理這個事情,XSS。如何使用OWASP檢測Java中的XSS
我需要檢測,如果一個字符串包含XSS與否。爲了解決這個問題,我使用link。這是我使用的代碼:
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;
}
使用上面的代碼,我也成功趕上的東西,如:<script>alert('xss')</script>
我的問題是,我確定以下字符串包含XSS雖然它不是: {「項目」:5}
這是因爲jsoup.clean把它變成{"item" :5}
我試圖解決,但沒有成功。 這讓我不知道我的算法是完全錯誤(如果是的話我在哪裏可以找到算法來檢測XSS),也許我並不需要比較原始字符串?
如果你能幫助我,我將非常感激。
謝謝
您不能「檢測字符串是否包含XSS」。正確地轉移輸出並且XSS不會成爲問題。 – Ryan
Owasp提供消毒劑,使用那些 – Marged
你如何正確地逃脫?沒有約定嗎?我應該只使用apache.StringEscapeUtils.escapeHtml? – wantToLearn