パスワード強度チェッカーと強度メーターのコード
パスワード強度チェッカー
パスワード強度チェッカー+登録フォーム用の強度メーターのコード | We.Inc
パスワードがどれだけ推測されやすいかをブラウザー内だけで確認し、解読にかかる時間の目安と強度を下げているパターンを表示します。さらに、パスワード表示切り替え付きのReactまたはプレーンなJavaScriptの強度メーターをコピーできます。
強いパスワードとは、攻撃者が現実的な試行回数では推測できないものです。最も重要なのは長さで、次によく使われるパスワード、単語、キーボードの並び、日付を避けることです。下にパスワードを入力すると、推測回数と解読時間の目安がオフラインで表示されます。自分の登録フォーム用に、パスワード表示切り替え付きの強度メーターもそのままコピーできます。
最新のNISTガイドラインが登録フォームに求めること
- 最小文字数
- パスワードが唯一の認証要素なら15文字、別の要素と併用するなら8文字
- 文字種の組み合わせルール(記号を必ず含める…)
- 課さない
- 定期的な変更の強制
- 求めない。漏えいがあった場合にのみ変更を強制する
- 禁止リスト
- よく使われるもの、予想しやすいもの、漏えいしたパスワードを拒否する
チェッカーは、攻撃者が最初に試すであろう部分にパスワードを分割し、各部分に必要な推測回数を掛け合わせます。入力した内容がこのページの外に出ることはありません。その下には、登録フォームに貼り付けられる強度メーターが2つあります。1つはTailwindを使ったReact用、もう1つはプレーンなJavaScript用です。
- パスワードを入力します。キーを押すたびに目安が更新され、ブラウザーの外に送信されることはありません。
- 「非常に弱い」から「非常に強い」までのスコア、推測回数の目安、4つの攻撃シナリオでの解読時間を確認します。
- どの部分が、よく使われるパスワード、単語、キーボードの並び、連続した文字、繰り返し、年として検出されたかを、それぞれの警告とともに確認します。
- 自分のフォーム用にReactまたはプレーンなJavaScriptのメーターをコピーします。どちらもパスワード表示ボタンを備え、変化をスクリーンリーダーに通知します。
- ランダムな単語を3つか4つ並べたほうが、記号を短く組み合わせたものより強く、スマートフォンでもずっと入力しやすくなります。
- パスワードマネージャーを使い、パスワードを生成させましょう。最良のパスワードは、覚える必要のないパスワードです。
- 自分の登録フォームでは、新しいパスワードをサーバー側で漏えいリストと照合しましょう。Have I Been Pwnedは、完全なパスワードハッシュを受け取らない無料のrange APIを提供しています。
- 登録フィールドにはautocomplete="new-password"、ログインフィールドにはautocomplete="current-password"を設定し、パスワードマネージャーが適切な動作を提案できるようにしましょう。
よくある質問
実際のパスワードをここに入力しても安全ですか?
チェックはすべてブラウザー内で行われ、入力内容を含むネットワークリクエストをページが送ることはありません。それでも、最も安全なのは、実際のパスワードではなく、同じ形のパスワードでテストする習慣です。
解読時間はどのくらい正確ですか?
あくまで目安です。チェッカーは、よく使われるパスワードと単語の短い内蔵リストを使うため、あまり一般的でない単語から作ったパスワードは、ここでは実際より高く評価されることがあります。4つのシナリオは、試行回数が制限されたログインフォームから、高速なハッシュを使う盗まれたデータベースまで、典型的な攻撃速度を想定しています。実際の攻撃者は、Webページに収録できるものよりはるかに大きい漏えいパスワードのリストやルールも使います。
登録フォームで記号と数字を必須にすべきですか?
最新のNISTガイドラインでは、必須にすべきではないとしています。文字種のルールは、Password1!のような予測しやすいパターンへ人を誘導し、ルールには合格しても推測には弱くなります。最小文字数と、よく使われる・漏えいしたパスワードとの照合を組み合わせたほうが、セキュリティに効果があります。
フォームにパスワード表示ボタンが必要なのはなぜですか?
伏せ字のフィールドは、特にスマートフォンで入力ミスを招き、入力ミスはアカウントのロックやパスワードのリセットにつながります。切り替えボタンがあれば、入力内容を確認できます。わかりやすいラベルの付いた本物のボタンを使い、フィールドのtypeをpasswordとtextで切り替えましょう。
メーターのコードは漏えいリストとパスワードを照合しますか?
いいえ。メーターはブラウザー内で長さ、文字の多様さ、いくつかのわかりやすいパターンを評価し、すぐにフィードバックを返すためのものです。本当の関門はサーバー側に置くべきです。最小文字数をそこで強制し、漏えいリストに含まれるパスワードを拒否しましょう。
複雑さより長さが勝る理由
- 1文字増えるごとに、考えられるパスワードの数は掛け算で増えます。ランダムな小文字を1つ加えると26倍になりますが、単語のaを@に置き換えてもほとんど効果はありません。攻撃者はそうした置き換えを自動で試すからです。
- そのため、この目安は長いパスフレーズを高く評価します。互いに無関係な4つの単語なら、入力しやすいまま最も強いランクに届くことがあります。ただし、有名なフレーズや歌詞でないことが条件です。
信頼されるメーターを作る
- よいメーターは、サーバーのルールと完全に一致したフィードバックを返します。メーターが「強い」と表示したのにサーバーがパスワードを拒否すれば、人はどちらも信用しなくなります。ルールは1か所にまとめ、どちらでも同じメッセージを表示しましょう。
- 変化はaria-liveでpoliteに通知し、スクリーンリーダーの利用者が現在位置を失わずに結果を聞けるようにしましょう。また、色だけに頼らず、バーに「弱い」や「強い」などのテキストラベルを組み合わせてください。
パスワード表示付きのReact + Tailwind強度メーター
表示・非表示ボタン、4段階のバー、ルールのチェックリスト、スクリーンリーダー向けのライブテキストラベルを備えた制御されたパスワードフィールドです。
プレーンなHTMLとJavaScriptのメーター
同じ仕組みをフレームワークなしで実装したものです。どのページにも貼り付けられ、スクリプトはラッパー内の要素にしか触れません。
よく使われるパスワード
一般的な単語
キーボードの並び
ランダムな文字
- 最もよく使われるパスワードの1つを含んでいます。攻撃者はこれらを最初に試します。
- 一般的な単語を含んでいます。文字を記号に置き換えても(aを@に)ほとんど効果はありません。
- qwertyや1qazのような隣り合ったキーの並びを含んでいます。
- abcや1234のような連続した文字を含んでいます。
- 繰り返しの文字を含んでいます。
- 年を含んでいます。生まれ年や最近の年は早い段階で推測されます。
- 15文字未満です。記号よりも長さのほうが強度を高めます。
- オンライン、試行回数制限あり(1時間に100回)
- オンライン、試行回数制限なし(1秒に10回)
- 盗まれたデータベース、bcryptなどの低速なハッシュ(1秒に1万回、10^4回)
- 盗まれたデータベース、MD5などの高速なハッシュ(1秒に100億回、10^10回)
パスワードをチェック
パスワード(この端末から出ません)
隠す
表示
約10^{n}回の推測
推測にかかる平均時間
入力を始めると目安が表示されます。
強度メーターのコード
登録フォームに貼り付けられる2つのメーターです。サーバーのルールはメーターと同じにしてください。
プレーンなJavaScriptのメーターを試す
動作するプレーンなJavaScriptのパスワードメーター
1秒未満
{n}秒
{n}秒
{n}分
{n}分
{n}時間
{n}時間
{n}日
{n}日
{n}年
{n}世紀
1億年(100万年の100倍)以上
無料で始める · クレジットカード不要
関連: 無料ツール|ビジネス向け計算・生成ツール
製品
ご利用いただける方
機能
リソース
会社情報
サイトマップを見る