2

簡単な登録フォームを作成していますが、誰かがベスト プラクティスのリストを教えてくれるかどうか知りたいと思っていました。登録フォームによって異なる場合があることは理解していますが、ガイドラインや脆弱性などに注意する必要があるかもしれません。私のデータ アクセス レイヤーは、クエリを処理するために Entity Framework と linq を使用します。

私が理にかなっていると思う慣行:

  • モデルがビジネス オブジェクトにバインドされているときにフォームを検証します (これを達成するための最良の方法は何ですか?)
  • サーバー側の検証とクライアント側の検証
  • SQL インジェクションをチェックしていますか? (これに関するベストプラクティスはありますか?)
  • アカウント マネージャー オブジェクトに依存性注入を使用する

私の登録フィールドは次のようになります。

  • ファーストネーム
  • 苗字
  • メール (選択したいくつかのサイト (@gmail.com、@yahoo.com、@live.com など) からのメールである必要があります)
  • 学校
  • パスワード
  • ステータス (3 つ程度のオプションの静的ドロップダウン)

また、ユーザーがアカウントをアクティブにするために自分のメールにアクセスする必要がある場合、メールのアクティブ化も本当に望んでいます。

4

2 に答える 2

2
  • System.ComponentModel.DataAnnotationsビュー モデルを検証するために名前空間を使用します。
  • はい、サーバー側とクライアント側の検証を行います
  • Entity Framework は既に SQL インジェクションを処理しています
  • ボットによるフォーム送信のスパムが心配な場合は、「キャプチャ」の使用を検討してください

電子メールの部分:

過去に、メールをランダムに生成された文字列にマップするデータベース テーブルを作成しました。完全な登録メールを送信するときは、そのランダムな文字列または GUID などを使用するリンクを提供します。

mydomain/completeregistration/7593098573903 whatever

ここで、クライアントがそのリンクをたどり、そのリクエストを処理したら、データベースで登録が完了したことをマークします。(これは、その URL への後続のリクエストを防止する効果もあるはずです)

于 2012-07-30T17:24:48.803 に答える
2

クライアント側とサーバー側の検証を使用しますクライアント側の検証のみを信頼しないでください

DataAnnotations と jQuery 検証プラグインを使用します。クライアント側の検証関数を記述する必要はありません。MVC は、HTML ヘルパー メソッドを使用して HTML 要素をレンダリングするときにそれを行います。

Entity Framework は、パラメーター化されたクエリを構築します。したがって、SQL インジェクションについて心配する必要はありません。ただし、エンティティ フレームワークを使用して SQL ステートメント/ストアド プロシージャを手動で実行する場合は、パラメーター化する必要があります。

于 2012-07-30T17:24:57.983 に答える