JavaScript での HTML エンティティのエスケープ解除
問題:
XML から HTML 文字列を受信するとき-RPC バックエンドでは、HTML 要素としてレンダリングされるのではなく、文字通りレンダリングされます。これは、HTML が XML-RPC チャネル経由でエスケープされていることを示唆しています。
DOMParser を使用した解決策:
セキュリティの脆弱性を導入せずに JavaScript で HTML エンティティを正しくエスケープ解除するには、次のようにします。 DOMParser インターフェイスを使用することをお勧めします。 DOMParser は、指定された HTML 文字列から DOM ツリーを作成し、エスケープされていないテキスト コンテンツを取得するために使用できます。
DOMParser を利用する htmlDecode 関数の更新バージョンは次のとおりです。
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/)'>")); // ""
2 番目たとえば、悪意のある可能性のある HTML 文字列は正しくエスケープ解除され、クロスサイト スクリプティング (XSS) の脆弱性を防ぐために空の文字列になります。
以上がJavaScript で HTML エンティティを安全にエスケープするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。