2010-12-18 18 views
2

私はユーザーにテキストを入力させたいと思います。テキストをユーザーに表示して、すべての空白を保持したいと思います。私はどんな悪用もしたくないし、ユーザーにhtmlやjavascriptを注入させてもらう。 HttpUtility.HtmlEncodeは使用するのに十分安全ですか? ATM <>と他のテスト文字が正しくエンコードされているため、正しく表示されます。テキストを正しく表示するには、何を使用しますか?今私は<pre><code>を使用しています。それは大丈夫だ、これを表示する正しい方法ですか?HttpUtility.HtmlEncodeは安全ですか?

+0

ソースコードをエコーバックするのか、ユーザー提供のテキストだけをエコーバックするのですか? –

答えて

4

HtmlEncodeは、HTMLコードやJavaScriptまでは安全である必要があります。 HTMLマークアップ文字は、Webページに表示されるときに他の文字としてのみ表示されるようにエンコードされます。

はい、すべてのスペースを含めて書式設定したければ、<pre>を使用します。

+0

HtmlEncodeは安全です。これは、対応するHTMLエスケープシーケンス(すなわち<など)と< >& " 'を置換、ならびにこれらの数値で任意のマルチバイト文字を交換します(つまり、☺) –

+0

それは私がすることができますから、マルチバイト文字を置き換えるものではありません表現をエスケープ160〜255の範囲の整数値を持つ文字は、数字のエスケープシーケンス(つまり、ÿ)に変換されますが、255より大きい値または160未満の値を持つ任意の文字(つまり、具体的に言及した5文字を除き、< >& "')がそのまま出力されます。 160-255をエスケープすることさえ気にしない理由は、とにかくHTMLテキストに予約された文字ではないため、ミステリー(160は拡張ASCII範囲の中央にあります)です。 – Triynko

1

Web Protection LibraryのAntiXSSセクションでGetSafeHTMLFragmentメソッドを調べることをお勧めします。これは、XSSの目的のためにHTMLが「安全」とみなされるホワイトリストを使用します。ホワイトリストにないものはすべて取り除かれます。 Blowdart(誰がWPLチームに勤務していますか)は、このメソッドを使用することで素晴らしいblogpostを持っています。

+1

+ -0。間違っている、私はhtmlをsanitizesし​​ようとしていない、ちょうどテキストを再度表示します。だからこの答えは正しくない。しかし、読んでいるときに他の人に役に立つかもしれません –

関連する問題