スレッド表示 | フラット表示〕 全トピック 920 件中 633 番目 次≫ ≪前

セッション寿命を延ばしたいんだけど…

created: 2004-04-11 17:26 | modified: 2004-04-16 10:15 | reply: 3

[1509] セッション寿命を延ばしたいんだけど…

user: | created: 2004-04-11 17:26
こんにちは。
セッション管理に関しての質問です。

とあるショッピングサイトで、数日間に渡ってセッションを保持したいと思い、独自にセッション管理スクリプトを組んでみました。ちなみに、数日間セッションを保持したいのは、ブラウザを終了してもバスケットの中身を消したくないためです。
サーバがレンタルサーバなので、php.iniのセッションファイル寿命をいじることが出来ないため、独自スクリプトにしました。(php.iniって、レンタルサーバだと普通はいじれないものですよね?私は何か勘違いしてますでしょうか?)

それぞれのお客さんごとにセッションIDと、それに対応するセッション用ファイルを生成してます。
IDは、
$ID = md5(uniqid(rand(),1));
のような感じで生成しています。
セッションIDはクッキーに保存し、クッキーおよびセッションファイルそれぞれに保持期限を設定します。
現在試してみているセッション保持期間は2週間です。期限切れのセッションファイルについては、セッション管理スクリプトへのアクセスがある時に、一定の確率でファイル消去スクリプトを実行しています。



さてそこで、いろいろ調べているうちに気になってきたことがあります・・・

■セッション寿命とセキュリティについて
phpの一般的なディフォルトのセッション寿命は1440秒ですよね。それについては、「短過ぎるとお客さんがブラウザを閉じてないのに消えてしまいかねないし、長過ぎるとセキュリティ上問題があるから」といったような記述を見かけました。
この、「セキュリティ上の問題」というのは具体的にはどういった点に気を付ければ良いのでしょうか?私がやろうとしている、期限2週間というのは1440秒と比べるとすご?く長いのですが、これはかなりまずいことなのでしょうか?

■セッションファイルがどんどん増えると??
2週間という期限を考えた時に気になったもう一つは、生成されるセッションファイルの数です。現時点では、該当サイトはそれほどアクセスの多いサイトではありませんが、それでも2週間の寿命だとするとセッションファイルが1000?2000個くらいになるのは十分考えられそうです。
このようにセッションファイルの数が増えてしまうと、サーバの負担などに悪影響が出るものなのでしょうか?
(※補足・・・使用しているサーバにファイル数の制限があるかどうかは調査中です。また、バイト数容量については余裕がかなりあるので問題ありません。)


--------------------

私のやろうとしてることは、なんかかなりまずいことなのかも?とかちょっと不安になっているのですが、アドバイスいただればありがたいです。よろしくお願いします。
reply: 1512 返信 編集 削除

[1512] Re.セッション寿命を延ばしたいんだけど…

user: ゆうじ | created: 2004-04-12 15:49
こんにちは。

> (php.iniって、レンタルサーバだと普通はいじれないものですよね?私は何か勘違いしてますでしょうか?)

ちなみにココのサーバもレンタルで触れません。
専用サーバでもない限りphp.iniを触れないところが
一般的ではないかと思いますよ。


> この、「セキュリティ上の問題」というのは具体的にはどういった点に気を付ければ良いのでしょうか?

実務で使ってないので以下は豆知識程度と思ってください。

セキュリティホールや通信の傍受などにより、
セッションIDが漏洩する可能性がありますが、
もし漏洩した場合でも、
セッションIDさえ無効であれば使えません。
なので、セッションの寿命が短いほど
セキュリティは高いといえると思います。

漏洩の防止策としては、
セキュリティホールが改善されたプログラムにまめに更新するとか、
SSLなどの暗号化通信にすることで、
サーバ側が原因の漏洩はほとんど防げますが、
厄介なのが、ユーザがコンピュータを共有していた場合です。

チョット席を離れている間に悪意のある人が・・・
なんてことが起こりえます。

セッションIDの寿命が短ければ、
こうした危険も抑えることが出来ます。


> セッションファイルがどんどん増えると??


こちらは、さっぱりわかりません。
未知なる世界なので
ローカルコンピュータでシュミレーションしてみるしかないでしょうね。

こんなご経験のある方、フォローいただけるとありがたいです。


---
バスケットの中身を保持したいだけならば、
バスケットの中身だけクッキー保存してはいかがでしょうか。
ユーザ側でバスケットの中身を2週間保持していたとして、
それが漏洩したとしても特に問題になることはないと思います。

勿論、ユーザ側に保存していても良い、
商品コードとか、注文数とかだけですけど。

これなら一旦セッションが切れても、
再びセッションが確立したところで、
バスケットの中身を再現できると思います。


もしかすると下手な考えかもしれません。
他の方からもご意見頂ければと思います。
Parent: 1509  reply: 1513 返信 編集 削除

[1513] セッションは短い方が安全

user: masa | created: 2004-04-12 20:39
htaccessである程度はPHPの設定を変更できるみたいです。(レンタルサーバーであっても)
register_globalsのon offは下記の文を一行で書いてサーバーにアップロードすればデレクトリー単位で変更が可能みたいです。
実際に私もregister_globalsがoffに変更された時に下記の文のhtaccessで変更しました。
php_flag register_globals on
逆にoffにしたい場合は
php_flag register_globals off
で変更できると思います。
magic_quotes_gpcのデレクトリー内の設定も下記の文で可能だと思います。
php_flag magic_quotes_gpc on
php_flag magic_quotes_gpc off
しかしセッションに関しては寡聞にして知りません。
しかしsession_cache_expire関数もあるのである程度は環境によっては出来るみたいですが、レンタルサーバーではわかりません。

しかしセッションが長いとゆうじさんの言われているようにセキュリティ面で危ないような気がしますのでクッキーで保存するのがいいのかもしれないです。
Parent: 1512  reply: 1519 返信 編集 削除

[1519] アドバイスありがとうございます

user: | created: 2004-04-16 10:15
こんにちは。
ゆうじさん、masaさん、お返事ありがとうございます。

お二人のご意見からざっくりと考えてみると、「セッションIDってのは、乗っ取られる危険が常にそれなりにある。で、その危険性というのは、ID寿命が長ければ長いほど大きくなる」って感じのようですね。
ID乗っ取りの危険に関してはある程度仕方が無いと現状では判断することにします。(サーバ初期値の1440秒であっても、乗っ取りの危険がゼロでは無い、というレベルの感覚においてですが)
本件のセッション管理では、バスケットの中身や閲覧履歴などの記録をしているのみで、個人情報管理は原則として含まれませんので、ID乗っ取りが行われたとしてもそれほどの悪さは出来ないかなぁと・・・。他人の買い物かごの中身を入れ換えて楽しむ愉快犯とか?(笑)

ただ、お客さんへの心証とかもありますから、なるべく危険を防げるような対策は考えていこうかと思います。例えば、2週間のところを1週間にするとか、あるいは一定アクセスごとにセッションIDを新しいものに書き換えるとか。

--------------------

ゆうじさんのおっしゃっている、「チョット席を外している間に悪意のある人が…」の危険性については、はなから諦めています。これはもう、お客さんご自身に注意してもらうしかないかなぁと。
これを防ごうと思ったら、例えば「購入フォームを送るにはパスワードが必要」、とかになってきてしまうかと思うんですが、そんなことしてたら面倒臭がられそうだし、それにパスワード入れた後に席をチョット離れたら同じことですしね。
(ちなみに該当サイトでは、いたずら防止のために、注文フォームの写しに対して確認メールを返信して始めて注文確定、というスタイルを取っています)

--------------------

バスケットの中身をクッキーに保存すれば良いのでは、というご意見もありましたが、私も当初それは候補に入れていたのですが、今回は結局やめました。
実は、保存したい内容がバスケットの中身に加えて「閲覧履歴」(お客さんが最近ご覧になった商品はこちら、って出るやつです)とか、ミニメモ帳とかそういった内容も保存する仕様になっています。ですので、あまりたくさんの情報をクッキーで処理するのは良くないかなぁと思いまして、サーバ側セッションファイルで処理することにしました。

--------------------

ファイルの数がどんどん増える??については、しばらく運営してみて、マメにセッションファイルの数やアクセスの重さなんかをチェックしてみようかと思います。意外と大丈夫かもしれないさ、と楽観視しておくことにします(笑)。
Parent: 1513  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 633 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑