在JavaScript 中取消轉義HTML 實體:綜合指南
使用來自XML-RPC 或其他採用HTML 實體轉義的伺服器的字串時,在HTML 內容中正確顯示這些字串的任務可能會帶來挑戰。以下是一些見解和解決方案:
避免不可靠的方法
雖然JavaScript 中存在各種用於HTML 轉義的技術,但其中許多技術都存在重大漏洞。使用無法驗證輸入字串的方法可能會引入跨站腳本 (XSS) 漏洞。
使用 DOMParser 進行安全轉義
為了確保相容性和安全性,強烈建議利用 DOMParser 進行 HTML 轉義。所有現代瀏覽器都原生支援此方法:
function htmlDecode(input) { var doc = new DOMParser().parseFromString(input, "text/html"); return doc.documentElement.textContent; } console.log(htmlDecode("<img src='myimage.jpg'>")); // "<img src='myimage.jpg'>" console.log(htmlDecode("<img src='dummy' onerror='alert(/xss/)'>")); // ""
在此範例中,您可以觀察到未轉義的影像標記呈現為實際影像,而惡意標記則被有效中和。這是因為 DOMParser 將輸入字串視為 XML,正確解釋並過濾掉惡意程式碼。
診斷提示
可以透過以下步驟排除轉義問題:
以上是如何安全地對 JavaScript 中的 HTML 實體進行轉義以防止 XSS 攻擊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!