パスワードポリシージェネレーター
パスワードのルールを、読みやすいポリシー文、検証用の正規表現、patternとpasswordrules付きのHTML入力欄、JSON設定に変換。NISTとPCIのプリセット付きです。
0 = 上限なし
大文字・小文字・数字・記号のうち(0 = オフ)。
0 = オフ
0 = オフ
従来型の複雑性ルールです。最新のガイドライン(NIST、OWASP)は長さとブロックリストを推奨しています。こうしたルールは "Password1!" のような予測しやすいパターンを招くためです。
ポリシーは必ずサーバー側でも適用してください。正規表現は UTF-16 のコード単位で数え、「記号」は A–Z・a–z・0–9 以外のすべての文字を指します。
パスワードポリシージェネレーターとは?
パスワード要件を一度定義すれば、必要なあらゆる形式で得られます。ユーザー向けの読みやすいポリシー文、検証用の正規表現、patternとAppleのpasswordrules属性付きのHTMLパスワード入力欄、JSON設定です。
パスワードポリシージェネレーターの使い方
- ポリシーのプリセットから始めるか、ルールを自分で設定します。
- ドキュメントや登録ページ用にポリシーの文章をコピーします。
- クライアント側の検証用に正規表現またはHTML の入力欄をコピーします。
- JSONの出力をバックエンドの設定として使います。
例
Classic preset: 8–64 characters, upper, lower, digit, symbol
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,64}$
passwordrules: minlength: 8; maxlength: 64; required: upper; required: lower; required: digit; required: special; allowed: ascii-printable; パスワードポリシージェネレーターを使うべき場面
パスワードポリシーの実装やドキュメント化に使います。必ずサーバー側でも同じルールを強制してください。クライアント側の正規表現は、ユーザーへのフィードバック用にすぎません。
パスワードポリシージェネレーターの仕組み
必須の文字種は (?=.*[A-Z]) のような先読みになります。「4カテゴリのうちN個以上」は、先読みのN個の組み合わせすべての選択になります。「同じ文字がN個を超えて連続しない」は (?!.*(.)\1{N})、長さは .{min,max}(スペースなしなら \S)になります。passwordrulesの値は、Appleのパスワードルールの構文(minlength、maxlength、required、allowed、max-consecutive)に従います。正規表現で表現できないルール(ユニークな文字、ブロックリスト、ユーザー名)は別に一覧表示されます。
一般的な使用例
- 登録フォーム用の検証用正規表現の生成
- Safariが準拠したパスワードを生成できるようにするpasswordrulesの追加
- ユーザー向けのパスワード要件の作成
- JSONによるフロントエンドとバックエンドのルールの同期
セキュリティ注意事項
クライアント側の検証は回避できます。ポリシーはサーバー側で強制し、パスワードはArgon2id、scrypt、bcryptでハッシュ化してください。
よくある質問
出力はどの正規表現の方言に対応していますか?
JavaScript、PCRE(PHP)、Pythonのre、Javaのいずれも、使用している先読み構文を受け付けます。
passwordrules属性とは何ですか?
Appleが提案したHTML属性で、サイトが受け付けるパスワードをSafariとiCloudキーチェーンに伝え、生成されたパスワードが検証を通るようにします。
正規表現でブロックリストを確認できないのはなぜですか?
数千件のよくあるパスワードや漏えいしたパスワードとの照合には、パターンではなくサーバー側での検索が必要だからです。