コンテンツにスキップ

WordPress デフォルトのパスワードバリデーションの仕組み

メインイメージ

WordPress のデフォルトのパスワードバリデーションの仕組みについて説明します。

WordPress パスワードの設定: 非常に脆弱

WordPress パスワードの設定: 普通

WordPress パスワードの設定: 強力

確認時のバージョン

  • WordPress 6.5.3

WordPress のパスワードバリデーション

WordPress にはユーザーのパスワードとして abcqwerty のようなセキュリティ的に弱いものがセットされることを防止するバリデーションの仕組みがデフォルトで組み込まれています。

CMS やウェブアプリケーションの世界ではサーバー側を「バックエンド」、ブラウザ側を「フロントエンド」と呼びますが、 WordPress のパスワードバリデーションの仕組みは実はバックエンド側には存在せず、フロントエンド側だけに存在します。

そして、そのフロントエンド側で使われているのは zxcvbn と呼ばれるオープンソースのライブラリです。

zxcvbn は与えられたパスワードを評価してスコアを返す関数を提供しています。 WordPress はそのスコアによって「非常に脆弱」「普通」「強い」といった人間が見てわかりやすい評価を表示する挙動をします。

ライブラリの名前の zxcvbn は QWERTY 配列で左下にある z の行のキーを n まで 1 つずつタイプしたもののようです。 悪いパスワードの典型をそのままライブラリ名にしたのでしょうか。

実は zxcvbn は 2024 年 5 月時点で開発・メンテナンスが停止してしまっており、最終リリースは 2017 年 2 月の v4.4.2 となっています。 フロントエンドのパスワードバリデーションに使われているライブラリなのでおそらくセキュリティ的には問題無いですが、 7 年以上前にメンテナンスが停止したライブラリが使われていることには不安を感じる方もいることと思います。

バックエンドつまり PHP の側でパスワードのバリデーションが行われていないことは、ブラウザの JavaScript を無効化して WordPress のユーザー編集ページを使うとかんたんに確認できます。 JavaScript が無効化された状態でもページを使うことができ、バリデーションが行われないので abcqwerty のような弱いパスワードでも問題なくセットできてしまいます。

意図して JavaScript を無効化しないかぎりそのような状態にはならないので多くの場合はこれで問題ありませんが、 IT リテラシー・セキュリティリテラシーが必ずしも高くないユーザーが利用するサイトを WordPress で構築する場合はフック関数を実装するなどしてバックエンドでもバリデーションを行うようにするのがセキュリティ的にはよいと思います。