パスワード設定はシステムのセキュリティを保つための重要なプロセス。以下の手順で、新しいパスワードの設定が安全かつ正確に行われるようにロジックを定義する。
1. バリデーション
入力された情報に対して、以下のバリデーションを行う。
- 空欄チェック: 必須項目である「ユーザID」、「現在のパスワード」、「新しいパスワード」、「新しいパスワードの確認」欄がすべて入力されていることを確認。
- パスワードの一致確認: 「新しいパスワード」と「新しいパスワードの確認」に入力された値が一致していることを確認する。
- パスワードポリシーの適合性: パスワードが設定されたポリシーに準拠しているかを確認。具体的には、以下の条件を満たす必要がある。
- 8文字以上
- 英大文字、英小文字、数字、記号を少なくとも1つずつ含む
- 連続した文字や、ユーザIDの一部がパスワードに含まれていないか
例:
“UserID123” というユーザIDに対して、「User1234」というパスワードは、IDと類似しているため不適切。
2. ユーザIDとパスワードの組み合わせ確認
次に、ユーザIDと現在のパスワードが正しいかどうかを確認し、不正なパスワード変更を防ぐ。
- ユーザIDとパスワードが同じでないか: 新しいパスワードがユーザIDと一致していないか確認する。セキュリティ上、パスワードはユーザIDと異なる値である必要がある。
- 現在のパスワードと新しいパスワードが同じでないか: 現在のパスワードと新しいパスワードが同じでないか確認する。パスワード変更の意味がないため、異なる値である必要がある。例:
ユーザが「現在のパスワード」として「Password123」を使用している場合、新しいパスワードとして同じ「Password123」を再度設定することは許可しない。
3. 更新処理の完了確認
パスワード変更をDBや関連システムに登録する処理が成功したかを確認する。
- DB更新の正常性: 新しいパスワードがデータベースに正常に登録されたかどうかを確認。更新処理が途中で失敗していないか、トランザクションが完了しているかをチェックする。
- エラーハンドリング: 更新処理中に発生する可能性のあるエラー(DB接続エラー、書き込みエラーなど)に対して適切なエラーメッセージをユーザに表示する。エラーが発生した場合、元のパスワードに影響がないことを保証し、再度試行できるようにする。例:
データベースの接続が途切れた場合、ユーザには「パスワードの変更に失敗しました。再度お試しください。」といったメッセージを表示し、再試行の方法を案内する。
追加の考慮事項
メール通知: パスワードが変更された際には、ユーザに確認メールを送信して、不正な変更がないかを通知する。
パスワード変更の履歴管理: 過去に使用されたパスワードを再度使用できないようにするため、パスワード履歴を管理する。例えば、直近3回分のパスワードを保存し、それらと一致しない新しいパスワードのみ許可する。
ロックアウトポリシー: 複数回の失敗したログインやパスワード変更試行に対して、ユーザアカウントを一時的にロックすることで、不正なアクセスからシステムを守る。