目次
JavaScriptによる入力制限とは
Webサイトでは、フォーム送信前にJavaScriptで入力内容をチェックすることがよくあります。例えば次のような処理です。
- 必須項目が入力されているかチェックする
- メールアドレスの形式を確認する
- 文字数制限をチェックする
- 数値のみ入力できるようにする
このような処理により、ユーザーは入力ミスにすぐ気づくことができ、エラー表示の回数も減るためユーザー体験(UX)の改善につながります。
JavaScriptの入力制限は簡単に突破できる
しかし、JavaScriptの入力制限はセキュリティ対策ではありません。JavaScriptはブラウザ側で動作する仕組みのため、ユーザーが環境を変えれば簡単に回避することができます。
例えば次のような方法です。
- ブラウザ設定でJavaScriptを無効にする
- 検証ツールで入力制限を変更する
- curlコマンドなどで直接POSTリクエストを送る
- APIツールでフォームの送信先URLを直接叩く
このような方法を使えば、JavaScriptによる入力チェックは誰でも簡単に突破できてしまいます。
必ずサーバー側で検証する必要がある
そのため、重要な入力チェックは必ずサーバー側で実装する必要があります。サーバー側の処理であれば、ユーザーがブラウザ設定を変更しても回避することはできません。
例えば次のようなチェックです。
- 入力値の形式チェック
- 文字数制限
- 数値の範囲チェック
- 権限チェック
- 不正なリクエストの拒否
JavaScriptはユーザー体験の改善のための補助として使い、本当に重要な検証はサーバー側で必ず再チェックする設計になっている必要があります。
まとめ
システムテストでは、JavaScriptによる入力制限について次のポイントを確認します。
- 入力チェックがJavaScriptだけに依存していないか
- サーバー側でも同じ検証が行われているか
- 不正なリクエストを送った場合にエラーになるか
JavaScriptの入力制限はユーザー体験を良くするための仕組みであり、セキュリティ対策ではありません。重要なデータの検証は必ずサーバー側で行う必要があります。システムテストではこの前提を理解し、入力チェックの設計が適切かどうかを確認することが重要です。