1

ドロップダウンが表示されているプロファイルページがあり、1人の管理者ユーザーが別のユーザーの役割を変更できると仮定します。

例えば:

2 - Admin
3 - Member

1それがのためであると仮定しSuperAdminます。DropDownListAsp.Netにがあり、それをコードビハインドでデータソースにバインドしてから、不思議なことにDropDownListの値を変更しようとすると、が原因で例外が発生するフォームを送信しEventValidationます。ただし、Asp.Net MVCでは、Webを採用しているため、編集すると間違いなく編集されます。私のWebアプリケーションでこの種の横断的なことを防ぐために私ができることはありますか?

私ができることの1つは、フォームが投稿されたときに、投稿された値が2または3であるかどうかを確認し、そうでない場合は「ハッキングしようとしていますか」などのメッセージを表示することです。より良い選択肢はありますか?

4

2 に答える 2

1

クライアント側の検証に依存しないでください。入力ごとにバリデーターを作成します。バリデーターのセットをアプリケーションのサーバー側に配置します。クライアント側にバリデーターがある場合は、サーバー側にも同じバリデーターが実装されていることを確認してください。

ここでの入力とは、URLベースのパラメーター、フォームベースのパラメーター、非表示フィールド、Cookieセットを意味します。

于 2012-05-19T12:37:51.150 に答える
1

あなたが言及した解決策(サーバーをチェックする)は、あらゆる種類のWebサイトでのそのようなハッキングを防ぐための正しい解決策です。
javascriptベースの検証を「ごまかす」ためのオプションはfirebugの使用だけではありません。また、フィドラーなどの基本的なスニファツールを使用して実行することもできます。これは、潜在的なハッカーがurサイトに投稿されたデータを分析し、希望する方法で変更してから、ブラウザまたは彼自身のネットワーキングツール。
私は通常、すべてのシナリオで両方の検証(スクリプト側とサーバー側)を使用しますが、クライアント側の検証の主な目的は、サーバーへのポストバック(通常のユーザーを困らせる)を防ぐことです。クライアント側、彼は何か間違ったことをしています。
ただし、このような検証は、javascript /投稿されたデータを変更してオーバーライドするのが簡単すぎるため、サーバー上でデータが自動的に信頼されることを保証するのに十分な安全性はありません。


UnhandleExceptionの応答に従って 編集
: MVCでは、特にデータ注釈属性を使用して、mvcエンジンにuのクライアント側とサーバー側の検証をレンダリングさせることができます
このチュートリアルでは、urmvcアプリで属性検証を使用する方法について説明します

于 2012-05-19T12:37:58.030 に答える