「mixi openidに対応したファイルあぷろだ」が誰でも使える件
mixi openidに対応したファイルあぷろだの作り方のはてなブックマークが盛り上がっているので、注意喚起を兼ねて書くよ。 ここに書かれている題材は面白いんだけど、リンク先で紹介されている「超簡易mixi opeind ライブラリ」はそのまま使っちゃダメ。絶対。
理由
認証成功時に発行するCookieが全ユーザで共通になっているので、もし1人のユーザがCookieの値を公開しちゃうと誰でもあぷろだが使えちゃう。 コミュニティに参加していない人でも、ね。 それに、このCookieは1ヶ月限定だけど、Cookieの値を記憶しておけば1ヶ月がすぎてもあぷろだにアクセスできちゃう。
あぷろだにログインした状態で
javascript:alert(document.cookie)
と入力すると、Cookieの値を見ることができる。 誰がログインしても、Cookieの値は先頭が「b」で始まっているはず。
これは、OpenIDの問題じゃなくて、ログイン後のセッション管理の問題。 具体的には以下の1行がダメ。
setcookie("user",md5(COOKIE_CODE),$timeout,'/');
対策
PHPなら普通にセッションCookieを使ってログイン状態を管理すればOK。せっかく session_start(); も呼んでいるんだし。 それに1ヶ月有効なCookieの実装はちょっと面倒なので、アクセスごとに認証するようにしたほうがいいかな。
補足
コミュニティ限定のあぷろだというアイデア自体は面白いと思うよ。