2012-01-23 1 views
1

投稿のコメントを処理するアクションに対して、ValidateInput属性をfalseに設定しました。私はこの構文を使用してhtml.encodingを使用していますコメントを再表示するは、ユーザー入力の再表示に関連するXSSに対抗するのに十分安全なこのMVCのアプローチですか?

次のコードをコメントボックスに掲示しました。コメントはそのままですが、スクリプトタグはそのままで実際のアラートは表示されませんでした。それは受け入れられますよね?

<script type="text/javascript"> alert("t"); </script> 

ここで、URL関連の攻撃を監視する必要があることはわかっていますが、入力を再表示するには、このアプローチは十分安全ですか?

編集:コメントは「<」のような文字を許可する唯一の場所です。ほとんどの入力ボックスは英数字のみです。

+0

"ほとんどの入力ボックスは英数字のみです"悪意のあるユーザーが手作業でサーバーに投稿を送信してから、入力フィールドに必要な値を入力する必要があります。そのため、クライアント側の検証を行っているかどうかにかかわらず常にサーバー側の検証を行うことが重要です。 –

+0

@ Dr.Wily'sApprentice私はクライアント側とサーバー側の両方で英数字の検証を行っています。 – TPR

答えて

0

はいあなたのアプローチは、あなたが<%:を使用しているという事実は、データベースに保存されているかは重要ではありませんことを意味し、安全で、ブラウザでレンダリングしたときに見える場合ので、エンコードさと値あなたのコメントを表示しているページのhtmlソースでは、<script...が実際には&lt;script...であることがわかります。これは実行する必要があるものとしてブラウザによって解釈されません。

サイドノート:これらのコメントはブラウザでそのまま表現されることはありません(最初にエンコードしないでください)、リスクを軽減する最も安全な方法は、それらは最初にサーバー側の検証を過ぎてしまいます。しかし、あなたのデータベースにコードを保存するための有効なユースケースがあります - あなたが提供していないユースケース(あなたが提供していないもの)によって異なります。

+0

あなたの「サイドノート」は私を失った。あなたが言ったことを言い換えることができますか? – TPR

+0

@progtick私は自分のサイドノートを少し明確にしました。 – Tr1stan

関連する問題