Wp-password-bcrypt による WordPress のセキュリティ強化

mat khau

wp-password-bcrypt はオープンソース プロジェクトであり、完全に無料で使用できます。

概要

wp-password-bcrypt は、WordPress の時代遅れで安全性に欠ける MD5 ベースのパスワードハッシュ方式を、最新かつ安全な bcrypt に置き換える WordPress プラグインです。

このプラグインは PHP 5.5.0 以上を必要とし、WordPress に標準装備されている password_hash 関数と password_verify 関数が付属しています。

問題

WordPress は依然として MD5 ベースのパスワードハッシュ方式を使用しています。そのため、PHP の最小要件を引き上げることを拒否しているウェブサイトが 25% あり、セキュリティが低下しています。サポート終了となった PHP バージョンを 5.2 まで引き下げ続けることで、password_hash などの新しい関数を使用できなくなっています。

これは、WordPress が 4 年以上も放置してきた既知の問題です。WordPress は安全性に欠ける MD5 をデフォルトにしているだけでなく、以下のいずれの対策も講じていません。

解決策

WordPress には少なくとも 1 つの良い点があります。それは、wp_check_password 関数と wp_hash_password 関数をプラグイン可能にしたことです。つまり、これらの関数をプラグインで定義し、デフォルトの関数を「オーバーライド」できるということです。

このプラグインは3つの関数を追加します。

wp_check_password
wp_hash_password
wp_set_password
wp_hash_password
この関数は最もシンプルです。このプラグインは、WPのデフォルトのパスワードハッシュ関数の代わりにpassword_hashを呼び出すだけです。wp_hash_password_optionsフィルターは、許容されるpassword_hashを持つオプションを設定するために使用できます。

wp_check_password
基本的に、この関数はデフォルトの関数の代わりにpassword_verifyを呼び出すだけです。ただし、ユーザーのパスワードが以前に古いMD5ベースのハッシュ関数でハッシュ化されているかどうかを確認し、bcryptで再度ハッシュ化します。つまり、このプラグインを既存のサイトにインストールしても、すべてがシームレスに動作します。

check_passwordフィルターは、デフォルトのWP関数と同じように使用できます。

wp_set_password
この関数は文字通りここに含まれていますが、ハッシュを返す関数が追加されています。デフォルトのWP関数は何も返さないため、意味もなくハッシュを2回計算することになります。

このアクション wp_set_password は、デフォルトのWP関数と同じように使用できます。