1

目立たないASP.net MVC3を使用してオンラインフォームを完成させました。必須フィールド、日付形式など、フォーム フィールドのすべての標準的な検証を行っています。SQL インジェクションなどから保護するために推奨される「高度な」検証があるかどうか疑問に思っています。たとえば、いくつかのテキストエリアとそれらの唯一の検証は、それらが必要であることです。

あなたが推奨するもの、またはフォーム検証の推奨事項を含む参照へのリンクを教えてください。

編集:検証を行う方法に関するチュートリアルを探しているのではなく、検証する対象に関する推奨事項を探しているだけです。たとえば、名前と日付用のテキストボックス、大きなコメント用のテキストエリアなどがあります。基本的な検証はすべて完了し、うまく機能しています。私の今の主な関心事は、SQL インジェクションを防ぐことだと思います。これについては、正規表現の検証を検討します。ありがとうございました。

読んでくれてありがとう。

4

3 に答える 3

1

フロントエンドはあまり重要ではなく、バックエンドのデータ アクセス戦略です。

では、データ アクセスはどのように行っていますか? パラメータ化されたクエリまたは ORM (Entity Framework) を使用していて、インライン sql を使用していない場合、問題はありません。データベース ドライバが適切なエスケープを行います。

他のシステムが保存されたデータを使用し、インライン SQL (パラメーター化されていないクエリ) を実行する可能性がある場合は、コードを正規表現して、1. 数字は数字であることを意味します 2. テキストは英数字のみです 3.ストアド プロシージャを使用する場合は、ストアド プロシージャ内のコードが sp_executesql によるインジェクションに対して脆弱でないことを確認する必要があります。サーバー側で動的 SQL がどうしても必要な場合は注意してください。sp_executesql は、すべての文字列を連結するのではなく、パラメーター化されたクエリをサポートします。

ここで言及する必要があると思うので、補足として、www.whatever.com/order/1 のようなシナリオは、一般に、QUERIES が現在のユーザーのアクセスを適切に制限していないパラメーターの改ざん (SQL インジェクションではない) に対して脆弱であることに注意してください。そのため、通常はクエリを見直して、ユーザーが要求しているものにアクセスできることを確認してください。OrderId=@orderId where CustomerId=@customerId の Order から ShipDate を選択します。customerId はサーバー側にのみ保存され、セキュリティ/プロファイル システムの一部です。

asp.net の Web フォームと MVC アプリケーションのハック防止に関する詳細情報が必要な場合は、pluralsight.com で 5 時間のコースを受講できます。

http://pluralsight.com/training/courses/TableOfContents?courseName=hack-proofing-dotnet-app&highlight=adam-tuliper_information-leakage#information-leakage

于 2012-10-29T19:35:54.590 に答える
0

独自のカスタム検証属性を作成し、控えめな JavaScript 検証エンジンに登録します。これはIClientValidateインターフェースを利用します。

IClientValidateこれは、独自のカスタム属性を生成し、目立たない JavaScript などに登録するためのチュートリアルです。

http://odetocode.com/Blogs/scott/archive/2011/02/21/custom-data-annotation-validator-part-i-server-code.aspx

http://odetocode.com/Blogs/scott/archive/2011/02/22/custom-data-annotation-validator-part-ii-client-code.aspx

また、リストを検証するために私が行ってここに投稿した例を次に示します。

コレクションの控えめな検証

于 2012-10-29T16:33:57.337 に答える
0

より厳密な検証のために、必須フィールド以外に正規表現を使用することをお勧めします。基本的な概要のリンクはこちら

于 2012-10-29T16:29:18.963 に答える