QUOIT Blog

PHPのセッション管理、どうしてる?

この記事は8年以上前の記事です。情報が古い場合がありますのでお気を付け下さい。

PHPで使える$_SESSIONは非常に便利なのですが、
セキュリティのことを気にするといろいろと問題が出てきます。

まず、そもそも$_SESSIONってなんなのさ、ってところはこちらが理解しやすいかと。

10日で覚えるPHPのキソ 第 10 回 セッション(SESSION) | バシャログ。

$_SESSIONがどういう仕組みなのかがわかりやすいです。

簡単に言ってしまえば、

サーバに保存されるデータ(PHPSESSID)

COOKIE(クライアントのブラウザ)が保存するデータ

の2つで成り立っているわけです。

さて、この$_SESSION、どういうところが問題になるのか。

羅列してみます。

1)サーバに保存されるデータの問題

$_SESSIONを使ったとき、サーバにはセッションIDが保存されています。
そして、クライアントのブラウザから送信されたセッションIDと一致した場合にデータを復元します。
しかしデフォルトの設定では、
クライアントから送信されたセッションIDが存在しなかった場合、
送信されたセッションIDを新たに作り出します。

ここで、次の記事に紹介されるような危険性が生まれます。

おさかなラボ – strictなシステムに対するSession Fixation対策

問題点を要約すると、

1)ある人が利用したセッションIDを、悪意を持ったユーザが流用する可能性がある。
2)セッション管理を行っていないシステムでは、ログイン機能自体が意味をなさない可能性がある。

…というところでしょうか。(ちょっと強引にまとめてますが)
上記サイトでは、併せて対策案も提案されています。

おそらく対策案は無数に存在します。
ただ、「そういった脅威が存在する」ということを知らなければ、
システムを作る側としては既に負けていると思います。

対策を講じるか否か、その判断が出来ないようではいけませんからね。。

主に自分に言い聞かせる記事でしたw

Comments are closed.