質問があります。jquery/javascript を使用して入力フィールドを検証するとします。
愚かな例:
if (password.length > 6) { //do soemthing useful }
訪問者は chrome または firebug でインスペクタを起動し、その値 6 をたとえば 2 に編集できますか?2 文字の長さのパスワードを作成できますか?
はいの場合、これを処理する最善の方法は何ですか? サーバー側でも常に二重チェックを実装しますか?
変更されるデータに影響*がある場合は、常にサーバーで検証してください。これは、ユーザーがJavaScriptを有効にしていない可能性がある(最近はかなりあいまいな)シナリオもカバーしています。
一部のフレームワーク(ASP.Netなど)では、検証を簡単に宣言できます。検証は、クライアントで最初に実行されますが、データがサーバーに到達すると自動的に再実行されます。
フォームフィールド以上のものが改ざんに対して脆弱であることを忘れないでください。CookieとURLパラメータは簡単に変更できます。
*データのセキュリティ、アプリケーションの適切な使用、サーバーのパフォーマンスなどを危険にさらすもの。
私は Tim に 2 番目に言わなければなりません。あなたは常にサーバー上で検証する必要があります。
ユーザーは、検証をバイパスするために Firebug のような複雑なものを必要としません。JavaScript をプレーン テキストでユーザーに送信しています。ユーザーがしなければならないことは、.html ファイルをディスクに保存し、JavaScript を好きなように変更し、好きなブラウザーで開くだけです。
誰かがそれをしなくても、HTTP_X_REQUESTED_WITH
独自の HTTP クライアントを作成する (または Curl のようなコマンド ライン HTTP クライアントを使用する) 場合、いつでも HTTP ヘッダー ( など) を偽造できます。
デバッガ、プロキシ、中間者、またはその他の複雑なプロトコル ハイジャックは必要ありません。(これらはすべて、サーバーでも検証する必要がある正当な理由ですが)