web-dev-qa-db-ja.com

HTML:<textarea>-タグ:そこに表示されているHTMLおよびJavaScriptコンテンツを正しくエスケープする方法は?

HTMLタグ<textarea>$FOO</textarea>があり、$FOO変数は任意のHTMLおよびJavaScriptコンテンツで埋められ、テキスト領域内で表示および編集されます。 $ FOOに適用する必要があるのは、どのような「エスケープ」ですか?

最初にHTMLをエスケープしようとしましたが、これは機能しませんでした($ FOOの元のHTMLコードではなく、エスケープされたコンテンツが表示されるためです。もちろん、これは私が望むものではありません。エスケープされていないHTML /を表示したいのです。変数のJSコンテンツ...

<textarea>タグ内にHTMLコンテンツを表示し、完全なHTMLとして編集できるようにすることは不可能ですか?

ありがとうジェンス

17
jens

私は最初にそれをHTMLから逃れることを考えました

はい、そうです。 <textarea>の内容は、<span><p>などの他の要素の内容と同じです。テキストを中に入れたい場合は、その中の<または&文字をそれぞれ&lt;および&amp;にHTMLエスケープする必要があります。

ブラウザは、<textarea>の障害マークアップでより多くの余裕を与える傾向があります。無効なエスケープされていない<シンボルのフォールバックは、タグではなくテキストとしてレンダリングすることですが、それによって間違いや危険性が低下することはありません(XSSの場合)。 )。

しかし、これはうまくいきませんでした

うまくいかなかったことを投稿してください。 HTMLエスケープは間違いなく正しいことです。

22
bobince

HTMLの特殊文字を 文字参照 (数値文字参照またはエンティティ参照のいずれか)に置き換える必要があります。textareaでは、少なくとも&<および>

2
Gumbo