2010-11-29 10 views
1

私はasp.netに小さなmceを使ってページにリッチテキストエディタを提供するページを構築しています。 Tiny mceはリッチテキストをhtml形式で出力し、データベースに保存します。その後、私はデータベースからHTMLを取り出してページに表示したいと思っています。永続的なxss/sqlインジェクションを避けながら、dbにHTMLを保存する

私は悪意のあるhtml、jsタグを後で出力する可能性のあるデータベースに入れることを心配しています。

誰かが私のプロセスのどの時点で私を歩くことができますか?永続的なxss攻撃やSQLインジェクション攻撃を防ぐために、htmlエンコード/デコードなどが必要ですか?

答えて

2

私たちは、途中で潜在的に危険なHTMLを取り除くためにMicrosoft Web Protection Libraryを使用します。「途中で」という意味 - ページがサーバーに送信されると、MS WPLを使用してHTMLをスクラブし、その結果をデータベースにスローします。悪いデータがデータベースに届かないようにしてください。あなたはそれをより安全にするでしょう。エンコーディングまでは、HTMLのエンコーディング/デコードを混乱させたくはありません。ちょうどあなたのtinyMCEコントロールにあるものを取り出し、それをスクラブして保存してください。あなたのディスプレイページでは、データベースに存在するように、それを文字通りのコントロールまたはそれに似たものに書き出してください。

私はMicrosoft.Security.Application.Sanitizer.GetSafeHtmlFragment(input)があなたがここで欲しいものを正確に行うと信じています。

+0

Brandonに感謝します。私はすでにこの道を踏みにじっていました。 – user263097

0

これらの管理者はRTEを使用していますか?もしそうなら、私はそれについて心配しないでしょう。

もしそうでなければ、TinyMCEのようなWYSIWYIGの使用をお勧めしません。あなたは実際に悪意のある入力を探す必要がありますし、チャンスは、ですはいくつかお見逃しでしょう。 RTEは単純なHTMLを出力するので、あなたはHTMLエンティティを変換するだけではありません。それはTinyMCEの使用の全ポイントを排除するものです。

データベースへのデータの挿入時にバックエンドでSQL注入を停止します。パラメータ化されたクエリを使用するか、入力をエスケープする必要があります(ASP.NETでの操作方法はPHPユーザーです)

0

BBCodeを使用するリッチテキストエディタは使用できませんでした。エスケープする必要があるすべてをエスケープし、後でBBCodeをHTMLマークアップに変換しますか?

クライアントでBBCodeを生成する代わりに、HTMLマークアップをサーバー上のBBCodeに変換し、残りのHTMLをエスケープして、BBCodeの結果をHTMLに戻すこともできます。

0

二つのアプローチがありますが、あなたはおそらく、あなたが許可されたタグのリストを作成し、それらの/ストリップ残りをエスケープします)最初の1

1を使用します。 TinyMCEにはおそらくいくつかのタグを使うことを禁止するいくつかの機能があります。(これはクライアント側のみですので、サーバー上で検証する必要があります)

2)許可されたタグを別の方法でエンコードします([b]太字[/ b] )あなたはDBにすべてを保存してレンダリングしている間にすべてをエスケープして、あなたの特別なタグを解釈するよりも、

3番目のアプローチ:ユーザーが管理者エスケープする...彼は自分の間違いの責任者です。

関連する問題