PHPセッションでうっかりミスにご注意を!CMSなどの管理ページを作成する際、PHPのセッションを利用することは多いと思いますが、みなさんはどのような手順で利用していますでしょうか。「session_start()」して、「$_SESSION」へデータを入れたり見たりして、最後はある方法で破棄して、という感じでしょう。(ある方法はまた後日)まぁ元々こういう使い方なんで当然と言えば当然ですよね。普通に利用する分には特に問題は無いでしょう。PHPのセッションは多くの場合Cookieを使っています。(URLパラメーターの話はまた後日)デフォルトで、Cookie名は「PHPSESSID」、利用するドメイン配下で参照可能になり、ここに落とし穴があるわけです。先程、普通に利用する分には特に問題無いと言いましたが、同じドメインで「複数の管理ページ」を設置する場合に危険な落とし穴があるわけです。○A社用管理ページwww.domain.jp/company-a/○B社用管理ページwww.domain.jp/company-b/のように、同じドメイン配下で2つの管理ページを作る場合です。ところで皆さん、管理ページへログインした後の、各ページでの認証チェックはどのようにされてますかね?大体下記のようにされているのではないでしょうか。“ダメダメ、ダメよ”;exit;}他のサイトや本で良く見ますね。何度も言いますが、普通に利用する分には特に問題は無いでしょうが、これをこの「複数の管理ページ」それぞれでこの同じ認証チェックをやってしまうと危険なんです。なんと、A社用管理ページにログインした後、B社用の管理ページにアクセスすると・・・・!これは、Cookie「PHPSESSID」が同じドメインのものとして判断されるからなんですが、PHPのセッションはCookieのことをあまり意識せずに利用できるので、こういった落とし穴に気づきづらいわけですね。セッション変数「$_SESSION[“ID”]」の「ID」だけでもそれぞれ違うものにしておけば、こういったことにはなりませんが、しなければならない対処方法は他にも色々あります。WEBや本には載っていない、独自のセキュリティ対策を考えるのも、開発者のささやかな楽しみですね。