JavaScript での HTML エンティティのエスケープ解除: 総合ガイド
HTML エンティティのエスケープを使用する XML-RPC またはその他のサーバーから取得した文字列を操作する場合HTML コンテンツ内でこれらの文字列を適切に表示するタスクは、課題となる可能性があります。以下にいくつかの洞察と解決策を示します。
信頼できないメソッドを避ける
JavaScript で HTML をエスケープ解除するさまざまな手法が存在しますが、その多くには重大な脆弱性があります。入力文字列の検証に失敗したメソッドを使用すると、クロスサイト スクリプティング (XSS) エクスプロイトが導入される可能性があります。
安全なエスケープ解除には DOMParser を使用してください
互換性とセキュリティの両方を確保するには、 HTML のエスケープ解除には DOMParser を利用することを強くお勧めします。このメソッドは、最新のすべてのブラウザでネイティブにサポートされています。
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 として扱い、悪意のあるコードを正しく解釈して除外するためです。
診断のヒント
エスケープ解除の問題のトラブルシューティングは、次の手順で容易に行うことができます。
以上がXSS 攻撃を防ぐために JavaScript で HTML エンティティを安全にエスケープするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。