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。通過這種方式,您可以確保您的文檔格式良好,不含任何“危險”元素。
添加回答
舉報