PHPのセッション管理、どうしてる?
PHPで使える$_SESSIONは非常に便利なのですが、
セキュリティのことを気にするといろいろと問題が出てきます。
まず、そもそも$_SESSIONってなんなのさ、ってところはこちらが理解しやすいかと。
$_SESSIONがどういう仕組みなのかがわかりやすいです。
簡単に言ってしまえば、
サーバに保存されるデータ(PHPSESSID)
と
COOKIE(クライアントのブラウザ)が保存するデータ
の2つで成り立っているわけです。
さて、この$_SESSION、どういうところが問題になるのか。
羅列してみます。
1)サーバに保存されるデータの問題
$_SESSIONを使ったとき、サーバにはセッションIDが保存されています。
そして、クライアントのブラウザから送信されたセッションIDと一致した場合にデータを復元します。
しかしデフォルトの設定では、
クライアントから送信されたセッションIDが存在しなかった場合、
送信されたセッションIDを新たに作り出します。
ここで、次の記事に紹介されるような危険性が生まれます。
問題点を要約すると、
1)ある人が利用したセッションIDを、悪意を持ったユーザが流用する可能性がある。
2)セッション管理を行っていないシステムでは、ログイン機能自体が意味をなさない可能性がある。
…というところでしょうか。(ちょっと強引にまとめてますが)
上記サイトでは、併せて対策案も提案されています。
おそらく対策案は無数に存在します。
ただ、「そういった脅威が存在する」ということを知らなければ、
システムを作る側としては既に負けていると思います。
対策を講じるか否か、その判断が出来ないようではいけませんからね。。
主に自分に言い聞かせる記事でしたw