2012-03-19 16 views
0

文字列をパラメータとし、div要素に表示するjs関数があります。このような文字列には、htmlタグが含まれている場合JavaScript:htmlテキストをプレーンテキストにする

div要素内のJS表示の内側のテキストをhtml-tagsのhtml-textとして強制的に表示するにはどうすればよいですか。また、特定のタグをフィルタリングする、つまりスタイリングに特定のタグを適用して他のタグを印刷する適切な方法は何ですか? (必要であれば、オプション>、しかし、あなたがする必要はありません)

+0

私はこの質問がもう一度zalgoを目覚めさせるのではないかと恐れています。 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – f0x

答えて

3

は、あなただけの&<を交換する必要があるインスタンスのString#replacespecMDC)を使用して、それぞれのエンティティと。

+0

ありがとうございます。ええ、私はちょうど "<"をコードにエンコードします。私のケースでは、XSS攻撃を避けるだけで十分だと思います。 – Sergey

+1

@ user1041195 **すべての**タグにJavaScriptを使用して偶数ハンドラを埋め込むことができ、 "javascript:"はURLの有効な接頭辞であることを忘れないでください。あなたのユーザーがHTMLを挿入できる場合は、これを手作りしないでください。 –

+1

@ user1041195:Adrianoが言ったことを強調する:いくつかのHTMLタグを許可する場合は、自分で行うよりも、XSSライブラリを使用するのが最善の方法です。自分で行う場合は、タグのホワイトリスト(他のものを許可しない)と各タグについて、そのタグで許可する属性のホワイトリストと、場合によってはその属性が許可する形式を行います。あなたは '許可したくないでしょう。 'などと呼ばれます。 –

1

また、特定のタグをフィルタリングする、つまりスタイリングに特定のタグを適用し、他のタグを印刷するだけの適切な方法はありますか?ユーザが直接挿入されたHTMLコードを入れて

XSSにとって危険です。 HTMLコードをサニタイズするには、いくつかのツールを使用する必要があります(ここでは、StackOverflowでいくつかのHTMLタグを使用できます)。

SOあなたは消毒剤、このクライアント側を使用することができる上、ここthis questionに掲載したよう:一方http://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/plugin/html-sanitizer.js あなたはASP.NET(1はお使いの環境に依存する、サーバー側でこれを行う必要があるかもしれませんPHP? ?)。

関連する問題