第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

java中的javascript解析器

java中的javascript解析器

至尊寶的傳說(shuō) 2023-08-04 17:38:43
我有一個(gè)文本框,可以接受任何文本,包括 html 和嵌入 javascript 的 html。我需要通過(guò)在 java 中實(shí)現(xiàn)的服務(wù)器端 REST API 來(lái)驗(yàn)證此數(shù)據(jù)?;旧衔倚枰ㄟ^(guò)不允許任何 javascript 數(shù)據(jù)保存在我的數(shù)據(jù)庫(kù)中來(lái)進(jìn)行此驗(yàn)證以避免 XSS 漏洞。當(dāng)我從服務(wù)器端 API 上的上述文本框中接收文本時(shí),如果存在嵌入 java 腳本的 html 文本,則應(yīng)該拋出錯(cuò)誤,但正常的 html 文本應(yīng)該沒(méi)問(wèn)題。示例:在上面的文本框中,<svg onload=alert(document.cookie)/>不允許使用 as 數(shù)據(jù),但 <html><h1>this is test</h1></html>允許使用正常的 html 文本。我嘗試使用 JSoup,它是一個(gè) HTML 解析庫(kù),但我只需要驗(yàn)證該文本中是否存在 javascript,而不是檢查 html 標(biāo)簽。任何人都可以建議一種方法來(lái)做到這一點(diǎn)。
查看完整描述

1 回答

?
狐的傳說(shuō)

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 的屬性(hrefsrc等)都可以包含"javascript:"執(zhí)行 JavaScript 的值。

最后,我建議不要將原始 html 存儲(chǔ)到數(shù)據(jù)庫(kù)中,即使它通過(guò)了您的驗(yàn)證。而是將 JSoup 解析的文檔再次轉(zhuǎn)換為 html。通過(guò)這種方式,您可以確保您的文檔格式良好,不含任何“危險(xiǎn)”元素。


查看完整回答
反對(duì) 回復(fù) 2023-08-04
  • 1 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)