XSS에 대한 내 애플리케이션의 입력을 위생 처리하기 위해 antisamy 라이브러리를 사용하고 있습니다. 나는 같은 중첩 된 태그에 문제가 :XSS는 중첩 된 HTML 태그 입력을 살균합니다.
public String clean(String input) {
if (input == null) {
return null;
}
input = StringEscapeUtils.unescapeHtml(input);
try {
Policy policy = Policy.getInstance(getClass().getResourceAsStream("/antisamy-textonly-policy.xml"));
AntiSamy antiSamy = new AntiSamy();
CleanResults cleanResults = antiSamy.scan(input, policy);
String cleaned = cleanResults.getCleanHTML();
return StringEscapeUtils.unescapeHtml(cleaned);
} catch (PolicyException e) {
....
} catch (ScanException e) {
....
}
}
입력이 유형에 대한 나의 테스트가 실패 :
public void doubleTagTest() {
def cleaned = xss.clean("<<b>script>alert('xss');<</b>/script>");
assert cleaned.isEmpty();
}
로 :
<<b>script>alert('xss');<</b>/script>
내 살균 방법처럼 보인다
어설 션 실패 : assert cleaned.isEmpty() | | | false 알림 ('xss');
at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:386)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:658)
어떻게 xss.clean에 재귀 호출없이 처리 할 수있는 어떤 생각을 가지고 있습니까()?
두 번째 unescapeHtml은 꽤 위험한 것처럼 보입니다. – Erlend