1 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
由于您已經(jīng)使用 JSoup 解析 HTML,因此下一步是遍歷每個(gè)元素以檢查它們是否包含 Javascript。像這樣的代碼將檢查每個(gè)元素:
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
然后,您應(yīng)該在函數(shù)內(nèi)部執(zhí)行幾項(xiàng)檢查:
當(dāng)然,拒絕
script
元素:e.normalName() == "script"
on*
拒絕在任何屬性(onload
、onclick
等)中具有值的元素。每個(gè)接受 URL 的屬性(
href
、src
等)都可以包含"javascript:"
執(zhí)行 JavaScript 的值。
最后,我建議不要將原始 html 存儲(chǔ)到數(shù)據(jù)庫(kù)中,即使它通過(guò)了您的驗(yàn)證。而是將 JSoup 解析的文檔再次轉(zhuǎn)換為 html。通過(guò)這種方式,您可以確保您的文檔格式良好,不含任何“危險(xiǎn)”元素。
添加回答
舉報(bào)