スキップしてメイン コンテンツに移動

投稿

2011の投稿を表示しています

WordPressのパスワードを別システムでも使いたいときの認証方法

「WordPressのユーザーを別のシステムに移行する」といった
ちょっと変わった案件に出くわした際のメモ。

パスワードもそのまま移行する仕様ですが、
新しいシステム側のログインチェック時にどうやって比較すれば良いのか、というのが疑問。

WordPressでのパスワードの暗号化(ハッシュ化)
そもそもWordPressのパスワードってどういう形で保存されているのだろう?

バージョン2.5以降:phpassバージョン2.5より前:md5
ってことみたい。
バージョンの途中で変わっているようです。

ちなみに、phpassで保存されているかどうかは、DB内のパスワードを見て、
頭の三文字が$P$かどうかを見れば分かるっぽいです。

phpassって何?って方には、こちらの記事がオススメ。
なぜPHPアプリにセキュリティホールが多いのか?:第40回 MOPS:安全性の高いパスワードハッシュ作成ツール - phpass|gihyo.jp … 技術評論社

よりセキュアにってことみたいです。

暗号化:wp_hash_password()
wp-includes -> pluggable.php 内のwp_hash_password()がハッシュ化する関数になります。
requireしているclass-phpass.phpというのがphpassの本体です。

※ソースコードはWordPress 3.2.1から引用。

wp_hash_password()の戻り値がハッシュ化されたパスワードになります。
このパスワードがWordPressのデータベース、 wp_usersテーブルに格納されています。

/** * Create a hash (encrypt) of a plain text password. * * For integration with other applications, this function can be overwritten to * instead use the other package password checking algorithm. * * @since 2.5 * @global object $wp_hasher PHPass object * @uses PasswordHash::HashPassword *…