2012-02-15 14 views
2

私はクライアントが入力したテキストエリアがhtml elements + textのクライアント/サーバーアプリケーション(asp.net)を持っています。htmlを保存するベストプラクティスの決定?

クライアントからサーバーに送信されるデータは、jQuery ajax POSTです。

は、クライアントの種類を言うことができます(ashxまで):

<b> Hello </b> 

ので、私:

1)encodeUriComponentテキスト全体。

2)Html Encode特殊文字(など&gt; &lt;

3)サーバ

4)DBに保存するために、これを送信します。

質問:

デシベルに保存するれる好ましい方法は何ですか?

&gt; &lt;?またはそれをデコードして保存する必要がありますか?

(データをユーザに提示する必要があり、将来のある時点...)

+4

um ...ちょうどデータベースのrawに保存してください。データベースに保存するには、何かをURLエンコードまたはHTMLエンコードする必要はありません。必要な唯一の保護は、すべてのクエリをパラメータ化するだけで簡単に実行できるSQLインジェクションです。 – BoltClock

+0

@BoltClockええ、しかし、私はそれが例外の原因となるので<>のようなタグでサーバを送信することはできません –

+0

@ subt13あなたは何をStackOverlFlowがやっているのですか?あなたはコードを書くとき? –

答えて

0
  1. POST生のHTML入力ご希望のアクション
  2. に、モデルの目的のフィールドに[AllowHtml]属性を使用します。
  3. Microsoft's Anti-XSSライブラリを使用して、javascriptなどを削除してください(意図しない限り)。
  4. 生のHTMLをデータベースに保存しますが、注入攻撃を防ぐためにパラメータ化されたクエリを使用してください。
  5. HTMLエンコードのすべてを停止します。それは恐ろしく見えます。
+0

MVCを使用していません。私はちょうどあなたの答えがmvcに関連していることに気づく。 Asp.netは生のHTML_を_POSTさせません - 私が '<'を送るとエラーが出ます –

0

あなたは、生のデータベースに保存することができますが、私は非常にあなたが入力をきれいにするパースのいくつかの並べ替えを使用することを示唆しています。あなたは、非標準のhtmlや、javascriptなどでの試みをきれいにする必要があります。さもなければ、それは巨大なセキュリティリスクです。ここでhtml tidy .netラッパーを使用できます。

http://markbeaton.com/SoftwareInfo.aspx?ID=81a0ecd0-c41c-48da-8a39-f10c8aa3f931

関連する問題