パスワードポリシージェネレーター

パスワードのルールを、読みやすいポリシー文、検証用の正規表現、patternとpasswordrules付きのHTML入力欄、JSON設定に変換。NISTとPCIのプリセット付きです。

0 = 上限なし

大文字・小文字・数字・記号のうち(0 = オフ)。

0 = オフ

0 = オフ

従来型の複雑性ルールです。最新のガイドライン(NIST、OWASP)は長さとブロックリストを推奨しています。こうしたルールは "Password1!" のような予測しやすいパターンを招くためです。

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,64}$
minlength: 8; maxlength: 64; required: upper; required: lower; required: digit; required: special; allowed: ascii-printable;

ポリシーは必ずサーバー側でも適用してください。正規表現は UTF-16 のコード単位で数え、「記号」は A–Z・a–z・0–9 以外のすべての文字を指します。

パスワードポリシージェネレーターとは?

パスワード要件を一度定義すれば、必要なあらゆる形式で得られます。ユーザー向けの読みやすいポリシー文、検証用の正規表現、patternとAppleのpasswordrules属性付きのHTMLパスワード入力欄、JSON設定です。

パスワードポリシージェネレーターの使い方

  1. ポリシーのプリセットから始めるか、ルールを自分で設定します。
  2. ドキュメントや登録ページ用にポリシーの文章をコピーします。
  3. クライアント側の検証用に正規表現またはHTML の入力欄をコピーします。
  4. 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キーチェーンに伝え、生成されたパスワードが検証を通るようにします。

正規表現でブロックリストを確認できないのはなぜですか?

数千件のよくあるパスワードや漏えいしたパスワードとの照合には、パターンではなくサーバー側での検索が必要だからです。

他のカテゴリを見る