パスワードの強度は長いことユーザに気をつけて欲しいこととなっています。どれだけ強いパスワードを用意しようと流出等のどうにもならない場合もありますが、パスワードに造詣の深くない人があっさり不正ログインできる状況よりはずっとマシです。近年ではブラウザがいい感じのパスワードを生成してブラウザが覚えるというブラウザ任せな機能もありますが、それを用いない場合も多いです。そういった時にはユーザが入力するパスワードの強度を計り、警告する機能が欲しくなります。
zxcvbnはそれを実現するライブラリの一つです。
dropbox/zxcvbn: Low-Budget Password Strength Estimation
zxcvbnはDropbox製のライブラリでいくつもの言語、環境に対応する派生があります。↑リポジトリから引用したリストが次です。
zxcvbn-python
(Python)zxcvbn-cpp
(C/C++/Python/JS)zxcvbn-c
(C/C++)zxcvbn-rs
(Rust)zxcvbn-go
(Go)zxcvbn4j
(Java)nbvcxz
(Java)zxcvbn-ruby
(Ruby)zxcvbn-js
(Ruby [via ExecJS])zxcvbn-ios
(Objective-C)zxcvbn-cs
(C#/.NET)szxcvbn
(Scala)zxcvbn-php
(PHP)zxcvbn-api
(REST)ocaml-zxcvbn
(OCaml bindings forzxcvbn-c
)
この記事のここ以降ではJavaScript版を扱います。
JavaScript版ライブラリはとても使いやすい作りです。インストールはnpmはもちろんCDNもあります。使い方は関数にパスワードを投げて、パスワードの評価をした構造体がずらっと返ってくる、というだけです。返ってくる構造体で特に使うのは score プロパティでしょう。0-4でパスワード強度を示します。
デモは次です。警告内容が完全に英語なのが日本向けでない(ライブラリバージョン固定とメッセージ置き換えによる翻訳で対応可能そう)ですが必要なものが一通りそろっており、パスワードについての勉強から始めて自作するよりよっぽど近道です。