0

すべてのユーザーを追跡する mysql データベースを使用して、JSP を使用して Web アプリケーションを作成しています。Web ページで、フォームを使用してユーザーが登録できるようにします。

たとえば、私のデータベースでは、ユーザーのユーザー名は最大 20 文字であるため、ユーザーが 20 を超えるユーザー名で登録することを許可しないようにします。私のアプリケーションでは、すべてのレベルを厳密に分離しているため、強力な分離があります。サービス、ビジネス ロジック、ビジネス フロー、および JSP ページで行われるプレゼンテーション レベルの間。

私の懸念は、特定のフィールドが正しいことをどこで確認する必要があるかです。ビジネスロジックでは、ユーザーの概念を抽象化するクラスを実装し、新しいユーザーを作成してデータベースに挿入できるようにします。ビジネス フロー (つまり Bean) では、受信したすべての HTTP パラメーターを詳しく説明できるため、すべてのフィールドの値を把握できます。挿入されたすべてのフィールドを分析し、条件付きでフォームを送信するjavascriptを使用しても、Beanまたは「ユーザー」クラスでJSPページで実行できます。どれが最も正しいでしょうか?

4

2 に答える 2

1

MVC に近いパターンを使用していると仮定すると、

入力の検証は、コントローラー部分に関連しています。データを処理し、これらのエラー メッセージをビューに渡すことでユーザー フレンドリーなエラー メッセージを表示するのはコントローラー次第です。すべての処理はコントローラーで実行する必要があり、データの検証は処理中です。

とにかく、モデルの追加のセキュリティは悪いことではありませんが、この場合、20 文字を超える文字を挿入するとデータベース エンジンが切り詰める (またはエラーをスローする) ため、まったく役に立ちません。したがって、セキュリティは既に整っています。

モデルは、データにアクセスして保存することのみを目的としており、検証することは目的としていません! (データ ストレージに検証が必要な場合や、データベース構造自体が整合性をチェックしない場合を除きます)。

繰り返しますが、これらは概念にすぎません。概念を好きなように採用するのは自由です。アプリケーション全体で一貫性がある限り (モデルでいくつかの検証を行わず、コントローラーでいくつかの検証を行わないでください。そうしているのであれば、一部をビューで行わないでください!)

于 2013-06-07T18:45:12.937 に答える