この人頭いいなと思ったエピソード

PHPでセッション情報をファイル保持にした場合、1セッションあたりのデータ量に上限はあるのでしょうか?
当然、大き過ぎても、リクエストタイムアウトなどして使い物にならないのかもしれませが、
基本的に、OSが扱う事のできるテキストファイルサイズとニアリーイコールと捉えても良いのでしょうか?

RHEL4
Apache2.0
PHP4.4.7

よろしくお願い致します。

A 回答 (1件)

ちょっと質問から離れるかと思いますが、アドバイスだと思ってください


質問にある 「セッション」とは スーパーグローバルの $_SESSIONをファイル保存設定で利用した場合。と解釈いたします。

$_SESSIONはセキュリティ的にあまり考慮されていません。
ですから、セッションジャック攻撃をされた場合、生データがずるずると引き出されてしまい不正アクセスの温床にもなります。

$_SESSIONになんでもかんでも入れれば確かに便利なのではありますが、常に攻撃の対象とされている ことに注意してください
クッキーに保存するよりは、微妙に「まし」だという意見もありますが、私個人としては同等のレベルのものだと認識しています。

クッキーに保存されているセッションIDを意図的に変化させたり、決め打ちのセッションIDをGETにもぐりこませたりしたスパムメールを送りつけて正規会員にアクセスさせに行った場合、簡単にログイン処理をすりぬけて不正アクセスされる場合もあります。
ですから「$_SESSIONはサーバーに保存されているから安全だ」と神話はなんら意味を持ちません。


具体的な「セッション」を実装する方法として。
$_SESSIONには一方通行のチケット(データと紐付けられるランダムな文字列等)を保存させておき有効時間を短く設定しておきます。
遷移をまたぐ場合にはこのチケットを使い、従来、$_SESSIONに入れていたデータ類はセッション用のDBに突っ込んでおく、このセッション用DBにも有効期限を短めに設定しておくことで、万が一セッションジャックをされても $_SESSIONに直接データを入れておくよりはセキュリティ的に「まし」な状態になります。

有効期限を短めに設定しておくと、サイトを閲覧しているうちにセッションが切れると思います。
その場合は、なにかしらサイト上で動きのある場合は有効期限をちょっとづつ延ばしてあげる処理をはさんでおけば、サイトを閲覧している以上はセッションが切れることを回避できます。
たとえば、オンラインの銀行サイト等では、3分とか5分などのかなり短めの有効期限を設定してあり、常になにかしら操作をしていないとすぐに「ログアウトしました」などのメッセージが出るかと思います。
それと同じです。
    • good
    • 0
この回答へのお礼

お返事遅れまして申し訳ございません。
ご意見ありがとうございました。
確かにそうですね。
セッションの有効期限は短く設定しようと思います。

お礼日時:2008/01/14 19:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報