ASVS 3.0.1を熟読しているときに、要件V5.18に出くわしました。
サーバー側の検証に加えて、クライアント側の検証が2番目の防御線として使用されていることを確認します。
うーん...クライアント側の検証は、セキュリティ上の利点がまったくないとは言われていませんか?
つまり、ユーザーに不要な入力を警告する便利な機能として、はい、しかしセキュリティ要件としてですか?私は何かを逃したことがありますか?
それでは、ASVSメーリングリストでの私の質問への回答がこの問題に光を当てました。個人的には、次の2つが最も強力な議論であると思います。
クライアント側の検証はバイパスできますが、攻撃の検出には役立ちます。たとえば、長さが10桁に制限されている入力フィールドがあるとします。これがクライアント側で検証されることになっていて、アプリケーションがより長いものまたは数字以外の文字列を受信した場合、(あいまいな意味で)何かが起こっていることは明らかです。
サーバーが実際に入力の一部を認識しないDOMを変更するJavaScriptを多く使用するアプリケーションでは、これが必要です。そのとき初めて、ASVSにはクライアント側のテストに関する専用のセクションがないことに気付きました(テストガイドにあるように)。
はい、クライアント側の検証は簡単にバイパスできます。それでも、たとえごくわずかであっても、ある程度のセキュリティを追加し、全体的なリスクを最小限に抑えています。
プロキシ/拡張機能を使用するのではなく、ブラウザから直接アラート(1)を送信できるIS攻撃者にとっての利点。
次に例を示します。強化されたロックダウンされた内部シンクライアントについて考えてみます。ここで使用できるのはブラウザだけです(javascriptを無効にすることはできません)。クライアント側の検証がない場合は、本番DBにあるSQLiを手動で悪用できます。