如何解决嵌套HTML元素的Java XSS清理
我正在使用Java中的JSoup库清理输入,以防止XSS攻击。它适用于警报('vulnerable')之类的简单输入。
示例:
String data = "<script>alert('vulnerable')</script>";
data = Jsoup.clean(data,Whitelist.none());
data = StringEscapeUtils.unescapeHtml4(data); //StringEscapeUtils from apache-commons lib
System.out.println(data);
输出:""
但是,如果我将输入调整为以下内容,则JSoup无法清理输入。
String data = "<<b>script>alert('vulnerable');<</b>/script>";
data = Jsoup.clean(data,Whitelist.none());
data = StringEscapeUtils.unescapeHtml4(data);
System.out.println(data);
输出:<script>alert('vulnerable');</script>
此输出显然仍然容易受到XSS攻击。有没有一种方法可以完全清除输入,以便从输入中删除所有HTML标记?
解决方法
不确定这是否是最好的解决方案,但是临时的解决方法是将原始文本解析为%ERRORLEVEL%
,然后清除Doc
元素及其所有子元素的组合文本:>
Doc
等待其他人提出最佳解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。