理論編:弱いパスワードを設定できないようにしよう
強いパスワードを設定することは、アカウントのセキュリティを高めるために重要です。 しかし、ユーザー自身がパスワードを設定できるアプリケーションでは、ユーザーの入力によっては弱いパスワードが設定されてしまう可能性があります。
そのため、アプリケーション側で弱いパスワードを設定できないように強制することが必要です。 このレクチャーでは、強いパスワードの条件を確認し、弱いパスワードを設定できないようにするための方法を解説します。
目次
強いパスワードの条件
以下のような条件をみたすことで、パスワードを強くすることができます:
- 文字数を長くする(12文字以上が推奨)
- 文字種(大小英字、数字、記号)を組み合わせる
- 推測されやすい単語、生年月日、数字、キーボードの配列順などの単純な文字の並びやログインIDは避ける
- 他のサービスで使用しているパスワードを使用しない
以前は、文字種を組み合わせることでパスワードを強くすることが推奨されていました。 しかし、最近では、文字種よりも文字数を長くすることのほうがより重要だと考えられています。 この講座では、文字数が12文字以上であることを強制するようにアプリケーションを実装します。
バリデーションを活用して弱いパスワードを設定できないようにする
弱いパスワードが入力されたときに、バリデーションエラーを発生させることで、弱いパスワードを設定できないようにすることができます。 バリデーションとは、ユーザーからの入力値が特定の条件を満たしているかをチェックする仕組みです。 今回は入力されたパスワードが12文字以上であるかを確認するバリデーションを実行しましょう。
import jakarta.validation.constraints.Size;
public record UserForm(
// ...
@Size(min = 12, max = 100)
String password
// ...
) {
}
このコードでは、ユーザーの入力を受け取る UserForm
の password
フィールドに @Size
アノテーションを付与しています。
@Size
アノテーションは、文字列の長さを検証するためのバリデーションアノテーションです。
min
属性には最小の文字数、max
属性には最大の文字数を指定します。
この例では、12文字以上100文字以下の文字列を許可するように設定しています。
まとめ
このレクチャーでは、パスワードの強度について学び、システム的に強いパスワードを強制する方法を解説しました。
- パスワードの強度を高めるには、文字数を長くすることが重要(12文字以上が推奨)
- バリデーションを活用して、弱いパスワードを設定できないようにすることができる
- 入力された文字数のバリデーションには
@Size
アノテーションを利用する