• 締切済み

Sessionの上限について

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

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

ちょっと質問から離れるかと思いますが、アドバイスだと思ってください 質問にある 「セッション」とは スーパーグローバルの $_SESSIONをファイル保存設定で利用した場合。と解釈いたします。 $_SESSIONはセキュリティ的にあまり考慮されていません。 ですから、セッションジャック攻撃をされた場合、生データがずるずると引き出されてしまい不正アクセスの温床にもなります。 $_SESSIONになんでもかんでも入れれば確かに便利なのではありますが、常に攻撃の対象とされている ことに注意してください クッキーに保存するよりは、微妙に「まし」だという意見もありますが、私個人としては同等のレベルのものだと認識しています。 クッキーに保存されているセッションIDを意図的に変化させたり、決め打ちのセッションIDをGETにもぐりこませたりしたスパムメールを送りつけて正規会員にアクセスさせに行った場合、簡単にログイン処理をすりぬけて不正アクセスされる場合もあります。 ですから「$_SESSIONはサーバーに保存されているから安全だ」と神話はなんら意味を持ちません。 具体的な「セッション」を実装する方法として。 $_SESSIONには一方通行のチケット(データと紐付けられるランダムな文字列等)を保存させておき有効時間を短く設定しておきます。 遷移をまたぐ場合にはこのチケットを使い、従来、$_SESSIONに入れていたデータ類はセッション用のDBに突っ込んでおく、このセッション用DBにも有効期限を短めに設定しておくことで、万が一セッションジャックをされても $_SESSIONに直接データを入れておくよりはセキュリティ的に「まし」な状態になります。 有効期限を短めに設定しておくと、サイトを閲覧しているうちにセッションが切れると思います。 その場合は、なにかしらサイト上で動きのある場合は有効期限をちょっとづつ延ばしてあげる処理をはさんでおけば、サイトを閲覧している以上はセッションが切れることを回避できます。 たとえば、オンラインの銀行サイト等では、3分とか5分などのかなり短めの有効期限を設定してあり、常になにかしら操作をしていないとすぐに「ログアウトしました」などのメッセージが出るかと思います。 それと同じです。

basutei
質問者

お礼

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

関連するQ&A

  • Apacheでセッションタイムアウトの設定方法

    ApacheでPHPで作ったシステムを動かしています。PHPの画面間のデータの受け渡しはセッションを使って行なっているのですが、 そのセッションが早めにタイムアウトとなってしまうので、 時間を長めに設定したいと思っています。 httpd.confのTimeOutを変更してみたのですが、 これはセッションのタイムアウトとは関係ないようで、 変更しても、動きが変わりませんでした。 httpd.conf内に他にそれらしい項目がないのですが、 セッションのタイムアウトを変更した場合、どこにあるどのファイルを変更すればよいのでしょうか? よろしくお願いします。

  • セッションについて

    PHPのセッションについてご教授ください。 session_start()の前でセッション名の変更を行うと、セッションidが受け渡されず、次ページが新規セッションとなってしまいます。クッキーを使った解決法を探してます。 セッション名を変更した場合、どのように解決すればよいでしょうか。初心者なのですが、一生懸命勉強中なので、宜しくお願いします。 開発環境: apache2.2 php 5.2 ページ1ソース <?php function main(){ session_name('member'); <= この行をコメントアウトすると、受け渡しできます session_start(); $_SESSION['test'] = 'test'; } main(); ?> <a href="sesstest2.php">test</a> ページ2ソース <?php session_start(); echo $_SESSION['test']; ?>

    • ベストアンサー
    • PHP
  • 共通関数でセッションのタイムアウトを指定する方法

    phpを始めたばかりなので 根本的な考え方から間違ってるかもしれませんが、 その時はご指摘下さい。 やりたい事は、セッションのタイムアウトの指定です。 ログインしてから1時間後にタイムアウトを促すように 作りたいのですが、なかなか上手くいきません。 まず、ログイン画面のphpファイルが存在します。 ここでログインするとトップページの phpファイルへ飛びます。 トップページでは、 includeで前頁に共通する関数が詰まったphpファイルを取り込み、 それぞれのページで様々な処理を行います。 このincludeするphpファイルにセッションの タイムアウトを行う命令を入れようと思っています。 そうすれば、前頁でこのファイルをincludeするだけで 1時間後にセッションが切れる、という仕組みが できると考えているのですが、できないのであれば、 ご指摘下さい。 ちなみにその共通phpファイルに入れてみた命令は以下です。 session_cache_expire(分数) 又は… session_cache_limiter('private'); session_cache_expire (5); あまりコードの意味はわかっていませんが、 この方法で何故できないのでしょうか? 一応、このやり方でできなかったので 各ページ単体にも同じコードを入れてテストしましたが、 セッションが切れる事はありませんでした。 何かアドバイスをお願いします。

    • 締切済み
    • PHP
  • Sessionがnullになりません。

    下記の環境でWebアプリケーションを開発しています。 java 1.5 eclipse 3.3 tomcat 5.5 ある画面Aは検索ボタンを押して結果一覧を表示したり、 結果一覧の詳細を知るためにリンクを押して、ポップアップ画面Bを表示したりします。 web.xmlに <session-timeout>10</session-timeout> と記述し、10分でタイムアウトとしています。 Servlet処理の最初で request.getSession(false) によりセッションを取得し、nullであればタイムアウト画面に遷移させています。 結果一覧を表示した後、10分間何もせずに画面Bを表示しようとすると ポップアップの画面はタイムアウト画面で表示されます。 Servletにブレークポイントをつけて確認したところ このときのrequest.getSession(false)の結果はnullでした。 タイムアウト画面を×ボタンで閉じ、A画面内で検索ボタンを押したところ、 request.getSession(false)の結果はnullではありませんでした。 ただし、session内にsetAttributeしていたBeanが全てnullになっており、 その後の処理で例外が発生してしまいました。 なぜ検索ボタンを押したところで sessionがnullになっていないのでしょうか?

    • ベストアンサー
    • Java
  • phpでセッションの切れるタイミングについて

    page1.phpで $_SESSION["SESSION_1"] = "aaa"; 次画面 page2.phpで $_SESSION["SESSION_2"] = "bbb"; としたとします。 セッションがタイムアウトした場合、$_SESSION[]ごとすべて開放されているのか、 $_SESSION["SESSION_1"]と$_SESSION["SESSION_2"]は個別なのかどちらですか? えーと、何がしたいのかと言いますと、 複数セッションを定義したとして、 セッションが生きているかどうかは定義したセッションすべて調べないとわからないのか? どれか一つ調べればいいのか? それが知りたいです。

    • ベストアンサー
    • PHP
  • オラクルのセッション数を抑制するアプリ手段について

    Excelのハイパーリンク情報を基にオラクルDBよりファイルデータをダウンロードするシステムがあります。 画像のような構成なのですがとてつもなく使われていて最近セッションがマジハンパない状態になります。 上限値を超えて困っています。 接続したら瞬時に切れるようなタイムアウト設定にすればいいじゃんと言われそうですがWEBから使うシステムの補助システムなのですぐ切れたら使い物になりません。 そこで画像の?の部分にバッファとなるアプリをなんとかできないものかと思っていますがいい案はないでしょうか?

  • sessionの生存時間

    こんにちは 最近PHPを始めました。 php4のsessionについて伺いたいのですが。 session_*関数で、/tmpに作られる、sess+sessionID と言うファイルは、いつまで有効なのでしょう? また、cookieにように生存期間を指定してやることは 出来るのでしょうか? よろしくお願いいたします。 #環境は、Linux & php4.01p12 & apache1.3.20です。

    • 締切済み
    • PHP
  • session_start出来ません。

    FreeBSD 4.11 Apache 1.3.33 PHP 4.3.11 の組合せでWebサーバをセットアップし、phpファイルにアクセスしたところ Fatal error: Call to undefined function: session_start() in /hogehoge/test.php on line 3 となってしまいます。 session.save_pathにはパーミッションを777にしていますが、session_startが出来ません。 どのように対応したらいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Apache→Tomcatでセッション維持されない

    Apache->Tomcatでセッションが維持されない Apacheのproxy_ajp.confの設定を ProxyPass /xxx/ ajp://localhost:8009/ とした時にhttp://サーバー名/xxx/(webapps内フォルダ名)/ でアクセスした場合アクセスする度に新しいセッションIDになってしまします。 Apacheのproxy_ajp.confの設定を ProxyPass / ajp://localhost:8009/ とした時にhttp://サーバー名/(webapps内フォルダ名)/ でアクセスした場合はセッションIDは保持されます。 http://サーバー名/でアクセスした時はTomcatのwebappsとは別の場所に配置したWebサイトを表示させている為、 【ProxyPass / ajp://localhost:8009/】とは設定したくはないんですが・・・ どうしたらよいでしょうか・・・? 今の状況 ■http://サーバー名/xxx/(webapps内フォルダ名)/  でアクセスするとセッションが保持されない。 ■Apache単体でphpを使った時、セッションは保持される。 ■8080ポートを使ってTomcatへ直接アクセスした場合、セッションは保持される。 環境 OS:CentOS 5 Apache:2.2 Tomcat:6.0

    • ベストアンサー
    • Java
  • header(Location:~)で$_SESSION[" "]が保持されない。

    自宅サーバー(apache2+php5+mysql5)のlocalhost環境で、 header(Lcation:~)の記述をすると、 セッションが保持されない現象が起きています。 本番環境のレンタルサーバーは、同じ記述で、 しっかりとセッションが保持されます。 この原因は、何でしょうか? php.iniの設定など、何か考えられることがあれば、 是非教えて下さい。 【やりたいこと】 ■a.php **************************************** <?php echo<<<EOD <form method="POST" action="./b.php"> <INPUT type="text" name="test"> <INPUT type="submit" name="Submit" value="確認画面へ"> </form> EOD; ?> ■b.php **************************************** <?php $_SESSION["test"]=$_POST["test"]; header("Location:./c.php"); ?> ■c.php **************************************** <?php echo $_SESSION["test"]; ?> 自宅サーバーだと、 a.phpで入れたデータが、c.phpで表示されません。 レンタルサーバーだと、 セッションが保持され、表示されます。

    • ベストアンサー
    • PHP

専門家に質問してみよう