Gmail、google docなど(google SSO)やその他のWebサイトのようなJavaScriptの重いアプリケーションの多くは、ログインフォームの検証にjavascriptを使用していないことに気づきました。一般的には、JSは第1レベルの検証として使用され、サーバー側の検証は第2レベルとして使用されます。では、JavaScriptを使用してログインページを検証しないのはなぜですか。特定のセキュリティリスクはありますか?
3 に答える
電話番号が Javascript の電話番号に似ているかどうかを検証できます。これは単純な形式の検証です。
Javascript を使用してログイン資格情報が有効かどうかを検証することはできません。これはサーバー上で行う必要があります。これは、単純な形式の検証ではなく、データベース内の情報が入力されたデータと一致するかどうかをサーバーが確認する必要があるためです。
Javascript でクライアント側でできることのほとんどは、ユーザー名が有効なユーザー名のように見えるかどうか (そのような制限がある場合)、またはパスワードが有効なパスワードのルールに一致するかどうか (そのようなルールがある場合) を検証することです。これにより、明らかに無効な値がより迅速に除外されます。しかし、特にログイン情報に関しては、プロセスをスピードアップしたくありません。攻撃者がランダムにユーザー名とパスワードを試すのを困難にするために、プロセスをできるだけ遅くする必要があります。
少なくとも、ユーザー名/パスワードのフィールドに何かが入力されたことを確認するために、そうしない正当な理由は考えられません。
簡単に言えば、javascript がオフになっていると、ブームが発生して検証が行われます。php などのサーバー側言語を使用してフォームを検証することは、フォームを無効にすることができないことを考えると、フォームを検証する最も効果的で最も安全な方法です。
誰かが JS をオフにした場合、ユーザー名またはパスワードなしでアカウントを作成できます。PHP で行う必要があるのは isset を実行することだけであり、これは起こりません。