ホームページ >ウェブフロントエンド >jsチュートリアル >XSS を防止しながら HTML 特殊エンティティを簡単にデコードするにはどうすればよいですか?

XSS を防止しながら HTML 特殊エンティティを簡単にデコードするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-28 20:35:13731ブラウズ

How Can I Easily Decode HTML Special Entities While Preventing XSS?

HTML 特殊エンティティを簡単にデコードする

HTML 特殊エンティティをデコードするのは、複雑な作業になる場合があります。次の JSON 応答を考えてみましょう:

{
    "message": "We're unable to complete your request at this time."
}

エンコードされたアポストロフィ (') に注目してください。このエンコードの背後にある理由は不明瞭かもしれませんが、主な関心事はそれをデコードすることです。

jQuery の侵襲的アプローチ

jQuery を使用して考えられる方法の 1 つは、HTML 文字列を次のように変換することです。 div を作成し、そのテキスト内容を抽出します:

function decodeHtml(html) {
    return $('<div>').html(html).text();
}

ただし、このアプローチは多少問題があります。

推奨ソリューション: タグの保持

タグも保持する、より洗練されたソリューションが存在します。

function decodeHtml(html) {
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    return txt.value;
}

このアプローチには、 textarea 要素、その innerHTML を HTML 文字列に設定し、デコードされた値となる値を取得します。 content.

XSS 防止を使用した実際の例

次の例を考えてみましょう。

Input:
Entity:&amp;nbsp;Bad attempt at XSS:<script>alert('new\nline?')</script><br>

Output:
Entity: Bad attempt at XSS:<script>alert('new\nline?')</script><br>

ご覧のとおり、特殊なエンティティ (  ) はデコードされますが、script タグは保持されるため、アプリケーションの安全性が確保されます。

以上がXSS を防止しながら HTML 特殊エンティティを簡単にデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。