1 回答
TA贡献1804条经验 获得超3个赞
由于您已经使用 JSoup 解析 HTML,因此下一步是遍历每个元素以检查它们是否包含 Javascript。像这样的代码将检查每个元素:
boolean validateHtml(String html) {
Document doc = Jsoup.parse(html);
for(Element e : doc.getAllElements()) {
if(detectJavascript(e)) {
return false;
}
}
return true;
}
private boolean detectJavascript(Element e) {
if(/* Check if element contains javascript */) {
return true;
}
return false;
}
detectJavacript
然后,您应该在函数内部执行几项检查:
当然,拒绝
script
元素:e.normalName() == "script"
on*
拒绝在任何属性(onload
、onclick
等)中具有值的元素。每个接受 URL 的属性(
href
、src
等)都可以包含"javascript:"
执行 JavaScript 的值。
最后,我建议不要将原始 html 存储到数据库中,即使它通过了您的验证。而是将 JSoup 解析的文档再次转换为 html。通过这种方式,您可以确保您的文档格式良好,不含任何“危险”元素。
添加回答
举报