電気ウナギ的○○

About Home

某地域 SNS の移行がやっと終了

shinoda (2009年11月18日 12:04)

以前もここに書いたことがあるが、うちで運営している某地域 SNS(OpenPNE のカスタマイズで構築)のサーバの引っ越しをしたいのだが、新しいサーバで何故かログインが出来ないため引っ越し中断・・・という状況が発生していた。

原因はわかっていて、ログインIDであるメールアドレスが可逆暗号化され DB に格納されているのだが、その可逆暗号化の結果が新旧のサーバで異なるためである。

OpenPNE は Blowfish.php というライブラリを使用して可逆暗号化を行うが、具体的には、以下のように何らかの環境の違いで、暗号化された結果の値がサーバにより異なってしまうのだ。(俺が OpenPNE のプログラムを元に作った encode/decode プログラムで試してみた)

(例)

旧サーバで、アドレス hoge@exsample.jp を可逆暗号化。

% ./address_encode.php hoge@exsample.jp
KAE+4mgyUhML7DfiOOerPA==

得られた結果を、同じ旧サーバで復号してみる。

% ./address_decode.php KAE+4mgyUhML7DfiOOerPA==
hoge@exsample.jp

バッチリ復号できる!

で、この暗号化されたコードを、新サーバで同じように復号してみる。

% ./address_decode.php KAE+4mgyUhML7DfiOOerPA==
*エ喀:t.^+7僖甍ヌ

うぎゃあ。化け化けになって駄目じゃん。

ちなみに、同じアドレスを新サーバで可逆暗号化すると、まったく違う結果になる。

% ./address_encode.php hoge@exsample.jp
3ATgPj5OoPcpqogJG2uGhg==

で、もちろんこれは復号出来る。

% ./address_decode.php 3ATgPj5OoPcpqogJG2uGhg==
hoge@exsample.jp

・・・ということだ。

なので、旧サーバの DB の内容を単純にバックアップ&リカバリしただけでは SNS にログイン出来ないのである。

結局、旧サーバで一旦 c_member_secure テーブルの内容を復号してファイルに保存。
新サーバで DB をそのままリカバリした後、このファイルをもとに改めて可逆暗号化を行い、c_member_secure テーブルを UPDATE するという移行ツールを作って対応。

これで、PC からのログインも、携帯からのログイン(簡単ログイン含む)もばっちりOK!となった。

いやあ、しかし、何でこんな事が起きるんかねえ。
OS の違いは関係ないんだろうけど。(旧サーバは FreeBSD 6.0-RELEASE、新サーバは CentOS release 5.4)
PHP(PEAR 含む)のバージョンが全然違うので、そのせいかねえ。

こういう現象が世の中で沢山起きていれば商売になるのだがなあ・・・(^^;

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/889

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE