最近、1ページで200を超えるカスタムバリデーターを使用する.net Webアプリを作成しました。私はClientValidationFunction
とOnServerValidate
の両方のコードを書きましたが、その結果、大量の反復コードが発生しました。
私のsqlステートメントはパラメーター化されています。入力フィールドからデータをプルし、sqlステートメントまたはストアドプロシージャに渡す前にそれらを検証する関数があります。また、JavaScriptは、ページが送信される前にフィールドを検証します。したがって、基本的に、データはOnServerValidate
に到達する前でもクリーンで有効であり、前述の手順により、いずれにしてもクリーンになります。
これは私に質問をします、クライアント側で検証するときにOnServerValidate
は本当に必要ですか?
編集:
私のOnServerValidate
sは、スキップパターンが適用されることや、テキストにショートが表示されることを確認するなどの簡単なことを行います(これは、テキストフィールドからパラメーターにデータをプルするコード(つまりGetShort())で強制されます)。そして、これらは患者調査に配置されており、ほとんどの場合、スタッフが記入します。
したがって、これらの基本的なチェックのためのOnServerValidate
がなく、クライアント側だけの場合は、次のような状況になります。
OnServerValidate
はスキップパターンを見ているだけなので、彼らがやろうとしていることを何でも止めるためにジャックを実行しますか?状況2は、私が迷ってしまうところです。投稿を強制しているユーザーがこれらの単純なOnServerValidate
sに捕まる可能性が高いようです
クライアントがブラウザでJavaScriptを許可することを決定できるため、これらは必要です。また、あなたのソフトウェアを壊したい人も考慮に入れるべきです。フロントエンドを使用せずに、投稿を作成してWebサイトに送信できるツールはたくさんあります。
クライアント側の検証はユーザーにとっていいことですが、サーバーは送信されたデータを決して信頼すべきではありません。
- 更新 -
編集内容を正しく読んでいる場合、OnServerValidate
sが既にサーバーに存在する検証機能を複製しているようです。その場合は、OnServerValidates
は必要ありません。
さらに、ユーザーがサービスへの投稿を作成した場合、OnServerValidates
はトリガーされないため、現在サーバー上にあるそのタイプの検証を維持することをお勧めします。
検証をスキップする場合は、サーバーよりもクライアントで実行する可能性がはるかに高くなります。
どこかでスキップする場合の問題は、検証が行われていないときに誰かがセキュリティホールを開いてしまう可能性があることです。