トップページphp
822コメント255KB

【PHP】セッションについて語ろう!【PHP】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/09/24 19:31ID:SnRvXmpI
ブラウザを閉じたらセッションの効果がなくなるのって、
ブラウザを閉じることでクッキーを消しているからなのですね。。
知らなかったよーーーーうわーーーん
0042nobodyさん03/10/11 10:46ID:f+KUGOmH
>>41
初心者には分かりきったことではないんでしょう。
なぜつっかかるのかわからん。
0043nobodyさん03/10/11 21:38ID:???
>>42何が言いたいかわからん、ということを言いたいのじゃないのか?>>41
0044参考03/10/12 02:38ID:hB6ZK8LU
貧弱なセッション管理について
ttp://www.atmarkit.co.jp/fsecurity/rensai/webhole03/webhole01.html

・セッションハイジャック
・Session Fixation攻撃
0045nobodyさん03/10/12 02:43ID:hB6ZK8LU
>>39
キャッシュを public にすると、そのままブラウザ閉じても、そのURLを開けばまた
情報が出てくるからじゃないの?
0046nobodyさん03/10/12 02:47ID:???
キャッシュの話と>>28は関係ない
>>28は戻るボタンを用意して、内容を復元する配慮をしてくれと
言ってるので、ブラウザの戻るでのキャッシュを使えとは言ってない
0047nobodyさん03/10/12 02:51ID:???
>>33もあれだな。
クラックの危険があるから通常は対策していると言ってるので
指摘される理由がわからんな
0048nobodyさん03/10/12 03:08ID:mzy4uQ15
セッションが使えるケータイってありますか?
ちなみに、J-PHONE J-SH05ではダメみたいです。
0049nobodyさん03/10/12 03:14ID:hB6ZK8LU
>>48
セッションの仕組み一度自分で作ってみたらどう?と思ったよ
0050nobodyさん03/10/14 21:07ID:/RUyf6Fs
session_set_save_handler()でDB(MySQL)にセッション情報を保存して管理する処理を
書いて普通にうまくいってたのですが、idを毎回変えたくて
ttp://www.asahi-net.or.jp/~wv7y-kmr/note/2003-09.html#YMD20030907_PHP
を参考に、疑似 session_regenerate_id()を作りました。

function session_switching() {
$qq = serialize($HTTP_SESSION_VARS);
if (!session_destroy()) {
session_id(md5(uniqid(rand(), 1)));
session_start();
$HTTP_SESSION_VARS = unserialize($qq);
return true;
} else {
return false;
}
}

んで、
session_start();
$noerr = session_switching();
ってやってみたんですが、関数の中のsession_start()で
「Fatal error: Failed to initialize session module」が出てしまいます。
destroy()したあとすぐにstart()するときに何か特別に注意することってあるんですか?
DB関連とsession_set_save_handlerはここをヒントにしました。
http://itbtech.itboost.co.jp/php/php_12.php
DBじゃなく、普通のファイル管理ではうまく動きました。
環境は、RedHat8.0, PHP-4.2.2, MySQL-3.23.56です。
0051nobodyさん03/10/14 21:11ID:/RUyf6Fs
訂正:session_switchingの2行目

if (!session_destroy()) {
 ↓
if (session_destroy()) {
0052nobodyさん03/11/13 18:52ID:???
生きてるか?w
0053nobodyさん03/11/19 18:30ID:???
ハイ
0054nobodyさん04/01/08 05:26ID:K/SrUI+S
アゲ

実際の所さCOOKIE無効のクライアントでも同一か認識できるから
俺はCOOKIEへの保存をセッションに保存してるわけだが

邪 道 か な ?
0055nobodyさん04/01/09 19:32ID:???
良いんでない? 俺もそうするときがあるよ。
0056ななしくん04/01/27 22:58ID:vdgC7W+O
セッション使ったプログラムかいてたんだけどさ、
使い方があまりにも簡単すぎて($_SESSIONとクッキー使った場合)
こっちは身構えてるので、逆に解説とかがわかりにくかった(藁
0057nobodyさん04/01/28 03:07ID:IiAYAwD1
>>56
確かにセッション使うのは楽だけど、
動作原理はしっかり理解する必要があるよ。
0058ななしくん04/01/28 06:10ID:???
>>57
様々な解説書サイトなどはそういう意図で、原理を説明されてるんだとは思います。
なんか、「どう使うか!!!」がなかなかわからなかったんですよ(藁
0059nobodyさん04/01/28 08:42ID:???
オイラも初めてセッションを使い始めた時は、>>58と同じような感じだったなぁ。

セッションが機能するのに何ページ必要かとか悩んだ悩んだ。
a.html フォーム
 |
b.php session_start(); $_SESSION['data']='a';
 |
c.php sessin_start(); $data = $_SESSION['data'];
0060nobodyさん04/01/29 07:51ID:???
同じく。実際やってみて思っていたより激しく簡単だったので
自分がやってることが、全然見当外れなのではないかと思ったりも。
もしかしたら、そうなのかもしれない。
一応自分の思ったとおりに動作しているし、人にチェックしてもらっても
ちゃんと動作していると彼は言う…。

>>57
使い方だけで、まだ原理とかあやふやなので
ちゃんと勉強してみようと思います。
0061nobodyさん04/02/01 18:12ID:LMIdhuo4
>>54
どうやってクライアントを認識しているのか教えてほしいage
0062nobodyさん04/02/12 11:51ID:acZilhbS
以前作ったショッピングサイト(注文数50件強/日※PHPではない)はクッキーでセッション管理してるけど、
カートに商品が入らないという問い合わせが、頻繁ではないがどうしても尽きない。
結局、クライアント側の設定に依存するし、やはり客に色々設定を強いるのはどうかと思う。

次やるとしたらamazonのようにURLに渡して管理したいけど、カート以前のページは
よほど商品数が多くない限り、一般的に静的に作りますよね?

そこで、URLでセッション管理したいがために、静的HTMLで済むものを、全部PHPで動的に
出力するのは馬鹿げた考えでしょうか?
0063nobodyさん04/02/12 16:36ID:???
>>62
いいんじゃない?
URLにセッションIDとか渡すのって普通だと思う。
0064nobodyさん04/02/14 08:52ID:???
俺はPHPじゃなくてJSPだが、静的ページも全部JSPだよ(商用)。
PHPでも同じようなことしてるひといるでしょう。
0065nobodyさん04/02/14 17:19ID:X1Wwd0H+
$_SESSION['msgs'] .= htmlspecialchars($_POST['msg'])
とすると、<input name="msg">に入力された文字列が
/tmpのセッションファイルに書き込まれると思いますが、
保存されるときの文字コードはブラウザから送られてくる
文字コードのままなんでしょうか?

1行目の方法で保存したものを、echo $_SESSION['msgs'];
で出力しても日本語部分が表示されません。
よろしくお願いします。

ブラウザはIEで、サーバー側はこうなってます。
mbstring.internal_encoding = EUC-JP
mbstring.http_output = SJIS
/tmpにある今回のセッションファイル : SJIS
0066nobodyさん04/02/14 19:01ID:1TD2enu0
こんにちは、PHP、Apacheという構成でi modeでセッション管理を行うことは可能なのでしょうか、可能であるとすればphp.iniやhttpd.conf等の設定部分や、またPHPスクリプトに特に留意するポイント等あれば教えて下さい。
0067nobodyさん04/02/17 21:52ID:???
できるけどGETでのセッション管理なんで認証とかにはつかっちゃ駄目
0068nobodyさん04/02/18 22:47ID:???
>>62
Amazonのように作るならOKじゃないの。
あれのカートは「誰の」という情報とは結びつかないようにしてあって、
会計の段階で「誰の」に結びつけるようにしてる。
# cookieが使える場合には、名無しさんAのカートのように、名無しさんも
# 区別して結びつけるけど。cookieに保存したセッションIDを使って。

その辺の個人情報や決済部分と切り離して設計できてれば
カート情報なんて商品リストの中から商品を選んだだけの存在だからね。
0069nobodyさん04/02/19 21:15ID:???
>>68cookieなしで amazon 使えるの?
00706804/02/19 23:37ID:???
>>69
普通に使えますよ、カート機能自体はSIDがURLに付加されてますし。
cookieが使える場合はその他の機能がプラスされたり、
カート機能の照合補正が行われたり。結構上手く出来てると思います。
気にならない(気づかない)というところも上手いところ。
0071nobodyさん04/03/04 23:25ID:???
session_startした後にPOSTしたページに
戻るボタンで戻ったら有効期限切れってなるのは
どう言う解決法があるのですか?
0072nobodyさん04/03/07 22:46ID:Nzwf/rJi
ホシュホシュ
0073nobodyさん04/03/09 22:32ID:???
おそレスですけど、
昔から、通販業者系はサーバサイドのセッション管理が標準だね。
0074nobodyさん04/03/18 02:35ID:5cjOT2D0
セッションですか?!
私にお任せあれ!!!!!

0075nobodyさん04/03/18 05:54ID:zQ2yHGPu
>>71
session.cookie_lifetime integer

session.cookie_lifetimeは、ブラウザに送信す るクッキーの有効期間を秒単位で指定します。値0は、"ブラウザを閉じ るまで"を意味します。デフォルトは、0です。 session_get_cookie_params()および session_set_cookie_params()も参照して下さい。
0076nobodyさん04/03/18 09:33ID:SVbaZ9qT
ブラウザを閉じても1時間は有効であるように、
ini_set( 'session.cookie_lifetime' ,’3600’ );と記述しました。
書き方がおかしいでしょうか?
この書き方では、設定変更は出来ないようです。

Local Valueは3600に変わるのですが、Master Valueは0になっております。
Master Valueも3600には変わらないのでしょうか?

ini_setを使えばソースから書きかえられると思うのですが。
0077nobodyさん04/03/18 10:37ID:???
>>76
こっちのスレの方が相応しいけど、マルチポストいくないっ
0078nobodyさん04/03/18 10:53ID:SVbaZ9qT
>>77
一言添えればよかったですね。
ちょっとこちらで質問させてください。
0079nobodyさん04/03/18 12:14ID:???
>>78
76の内容については向こうで既にレスが付いているが?
Local Valueではなく、Master Valueでないと駄目という理由が判らん。
値の優先度はLocal(高)、Master(低)。ディレクトリごと指定したいのなら、
Apacheの場合だと.htaccessを利用すれば良かろ
0080nobodyさん04/03/18 14:49ID:SVbaZ9qT
ini_set( 'session.cookie_lifetime' ,’3600’ );と
記述して、セッションIDが追加されなくはなります。

しかし、// ini_set( 'session.cookie_lifetime' ,’3600’ );と
記述して設定をやめて、アップしても
セッションIDが作られないんです。

0081nobodyさん04/03/19 15:09ID:???
鯖を数日動かしてると、
セッションが不安定にならない?
漏れの鯖は三日くらいでセッションがプチプチ切れるようになる。
apacheを再起動すると治るけど、
コレってPHPの設定がおかしいからかな?
0082nobodyさん04/03/19 17:48ID:???
>>81
PHP のバージョンと OS は何?
Linux で PHP 4.2.x を使っていた頃に同じ状態で苦労したことがあるけど。

Apache の error.log に Segmentation Fault とかのログが残ってる?
0083nobodyさん04/03/19 22:04ID:???
>>82
child pid ***** exit signal Segmentation Fault

ログにはこんなもんがいくつか残ってました
OSはRedhatLinuxでapache1.3.27、PHP4.3.2です
なんか分かりますか?
00848204/03/20 00:30ID:???
>>83
php.ini のセッションの設定で、

session.save_handler

に files 以外を指定している場合は安定しないかもしれない。

でも、PHP 4.3.2 だと、

bug #24592 (NULL related crash in session extension)
bug #22154 (Possible crash when memory_limit is reached and output buffering in addition to session.use_trans_sid is used)

の可能性の方が高そう。PHP 4.3.3 で修正されているみたいなので
バージョンアップしたらセッション周りは安定するかもしれない。
今なら、PHP 4.3.4 かな。もうすぐ PHP 4.3.5 が出そうだけど。

まあ、クリティカルなシステムをバージョンアップするなら、
十分にテストしてからにした方がいいと思う。
0085nobodyさん04/03/20 10:00ID:???
>>84
どうもです
ああ、やっぱバージョンのせいなんですかね
セッション機能にはmmを利用しているんですが、
どうせ処理速度には大差がないだろうし、filesを検討します
そのうちPHP5が出てきそうですが、
焦って飛びつくのは危険そうですね
00868404/03/20 10:55ID:???
>>85
PHP 4.2.x の頃に、パフォーマンス的に有利ということだったので、

session.save_handler = mm

にしていたことがあったけど、>>81 とほぼ同じ症状になった。
原因が分からず、随分悩んだ後、files に戻したところ、安定するようになった。

PHP 4.3.0 以降では確認していなかったけど、修正はされていないのかな。
0087nobodyさん04/03/20 12:40ID:???
いまfiles指定して動かしてみたところ、
特に処理速度にも問題ないし、とりあえず大丈夫
まあ今後>>81の症状がでるかどうかまだ分かりませんが・・・

でもコレはPHP4.3.2の問題じゃないかもしれませんね
apacheもlogrotateの時にサービスが落ちたりしますから
今じゃ毎朝cronでapacheを再起動してます(苦笑)
00888704/03/20 13:11ID:???
自分で書いてて思ったんですが、
apacheがちょくちょく落ちるのってかなりやばいよなあ(汗)
OSのレベルからアップグレードを考えるいい機会かもしれない
00898604/03/20 13:35ID:???
>>87
その状態だと、PHP の方が問題の可能性が高いと思う。
当時は、3日から 1週間にに一度再起動していたし、
apachectl で restart すると Apache が落ちてしまって、
apachectl start しないと起動しない状態になっていたので。

files に変更してからは、Apache が落ちることもなくなったので、
同じ問題だとすると、安定するかもしれないので、しばらく様子を
見てもいいかもしれない。

セキュリティ問題のこともあるので、簡単にバージョンアップできる
のであれば、バージョンアップした方がいいと思うけど。
0090nobodyさん04/03/20 15:55ID:???
>>86
mm ってなんですか?
当方セッション情報を MySQL に入れるハンドら作って動かそうとしているのですが、
既存のがあるんなら使っちゃおっかな〜
0091nobodyさん04/03/20 16:33ID:???
>>90
maji mukatsuku
00928604/03/20 20:56ID:???
>>90
セッションの保存用の共有メモリ。
ttp://jp.php.net/session

mm を使うと不安定になるという話をしていたのだが、PHP の最新版では
修正されている可能性もあるので使いたいのならどうぞ。

mm をインストール(既にインストールされている Linux ディストリビューションもある)して、
ttp://www.ossp.org/pkg/lib/mm/

PHP の configure で --with-mm を指定してコンパイルする。
php.ini で

session.save_handler = mm

に変更して Apache を起動。
00939004/03/21 03:27ID:???
おぉ!phpに既に用意されてるのね。さんきゅー
どれどれ・・ふむふむ・・
なーんだ、mmってモジュールの名前なのね・・
こっちか・・ http://www.ossp.org/pkg/lib/mm/
UNIXで動くのね・・どれどれ

#whereis mm
mm: /usr/ports/devel/mm

をを、Portsに入ってるジャン
んでも、こいつの動作検証せなあかんのか〜めんどくさっ

以上5分で却下しますた。ごめん。
0094nobodyさん04/04/02 20:40ID:???

こんなんが出てくるんですけど・・・
Warning: session_start(): Cannot send session cookie - headers already sent by
(output started at c:\program files\apache group\apache\htdocs\session\
session_test_1.php:2) in c:\program files\apache group\apache\htdocs\session\
session_test_1.php on line 3

session();の行でエラーなんだそうです。
/tmpのフォルダもCドライブに作りますたがダメです。

なんででしょうか?
0095nobodyさん04/04/02 20:46ID:???
>>94
すんません!いきなり判明しました・・・
1行目を空白にしていたのが原因でした。

1:    ←空白行にしていた
2:<?
3:session_start();
4:$_SESSION['register'] = 0;
5:
6:?>

1:<?
2:session_start();
3:$_SESSION['register'] = 0;
4:
5:?>

にしただけで治りました・・・
お騒がせしてすんません。
0096nobodyさん04/04/04 21:49ID:zccZUASs
IE6でクッキー機能をOFFにしているのにセッションが使えてしまう。
PHPのSIDもOFFにしているのに・・・
なぜ?

・・・と書き込もうとしたら2chに書き込めないw
なぜ掲示板でクッキー必須なんだ?
0097nobodyさん04/04/04 22:30ID:???
>>96
見逃してるだけだよ。
セッションが使えているなら、cookieかURIパラメータの中に必ず埋め込まれている。
0098nobodyさん04/04/04 23:29ID:???
>>96
勘違いしてるだけだな。
0099nobodyさん04/04/04 23:53ID:???
>>96
コンテンツの中に埋め込む場合もあるけどね。
01009004/04/05 01:55ID:???
セッションが使えていると勘違いしているに200$$
01019604/04/05 23:36ID:EigS3bMU
いや、セッションが使えてるのは間違いないのよ
<?php
echo $_SESSION["name"];
?>
とかでセッション情報をページに表示させるようにしてるから

URIパラメータもないし・・・
クッキーがコッソリ動いてるのか?とも思ったが、
2chに書き込みが出来なかったので、それも考えにくい・・・
自分のサイトだけクッキーが有効になってたのか?分からん・・・
0102nobodyさん04/04/05 23:45ID:???
テストに使用してるブラウザは?
IEでプライバシーポリシーうんにゃらで2chからのクッキー食べてくれないとか・・
0103nobodyさん04/04/05 23:55ID:???
Localだから
01049604/04/05 23:57ID:EigS3bMU
IE6でツール→インターネットオプション→プライバシー項目をMAXにして
「すべてのCookieをブロック」にしたのよ
ふつうコレでCookie機能は無効になるっしょ?
01059604/04/05 23:58ID:EigS3bMU
>>103
www
0106nobodyさん04/04/06 00:01ID:lpi6f7xm
今やったらセッション使えなかったよ
なんやねんな
0107nobodyさん04/04/06 00:34ID:???
>>104
IEだけで動作チェックするのは間違い。
0108nobodyさん04/04/06 02:28ID:???
IEだけでしか使わない社内用とかならあり
んでも、Mozilla使った方が開発はしやすいぽ
010910704/04/06 05:26ID:???
>>108
ちゃうちゃう。
最終的なユーザのことを考えた場合のチェックとしてはIEは外せないけど、
デバッグには向かないから使うなってこと。JavaScript系は特にデバッグしにくい。
但しJavaScriptの挙動はIEとMozillaは違うので、そこは留意しないと駄目。
XMLのチェックの部分では、IEの方が出来がいいと思う。
011010704/04/08 00:30ID:???
そうだね〜
XMLはIEの方が良い!
Mozillaのデバックコンソールってもう一声どうにかならんかなぁ
あとあと、CSSで幅の定義を1どっとずれて描画するのもどーにかならんかなぁ
はうっ!セッション関係無いし
011110804/04/08 00:31ID:???
>>110 ごめん名前間違えたw
0112nobodyさん04/04/14 12:42ID:???

 セッションとは、   フラグである・・・








 ようやく気が付いた。
0113nobodyさん04/04/14 14:05ID:vcn3L4Wo
>>112
セッションなんて言うからよく分からないんだよな。

「ページを超えて持ち運ばれるフラグ」って言えば分かり易いね。
0114教えてください・・・04/05/16 22:13ID:dL8RQ1Kh
以下の環境を構築しています。
<環境>
サーバA:192.168.11.1 WinXP-Apache1.3.29+PHP4.3.4 
サーバB:192.168.11.2 同上

やりたいことは、
@サーバAのLOGIN.PHPでログイン(=>LOGINFLG=ONを$_SESSIONに設定する)
AサーバBのxxxx.php($_SESSION[LOGINFLG」を見る)にアクセスする
 ->xxxx.phpが、$_SESSION[LOGINFLG」=ONを見て、PHPの参照許可を出す

という、セッション情報をサーバ間で持ち回るということをしたいんです。

条件として、
・セッションクッキーを使わない。
・Windows上(=mmが使えない)ということで、session.save_handler = filesを使う。
という状況なんですが、どうやれば、セッション情報の共有はできるんでしょうか・・

お教えください。。。

0115nobodyさん04/05/16 22:43ID:???
>114
セッションという機能がどういう風に実現されてるか、
またはどういう風にすれば実現出来るか考えてみれ

PHPのセッション機能は複数サーバ間で持ち越しすることは想定されていない(はず)なので、
書いてるようなことを実現したいなら、自分でセッション周りを作って、
セッション管理用のサーバを一つ用意すればいい。
が、そんなややこしいことするよりも、もっとスマートな解決法があると思うぞ。
根本的なとこから見直した方がいいと思う。
0116nobodyさん04/05/17 18:19ID:???
>114
DBは使わないの?
方法によっては簡単に出来るのに。
0117nobodyさん04/05/17 23:43ID:???
session.save_pathを指定しておいて、fsockopenするとか?

#勘違いっぽいのでsageておこう・・
0118nobodyさん04/05/19 00:08ID:???
つーかJavaみたいにphp5ではクラスにセッション情報を保持できるようになるんでしょうか?
0119nobodyさん04/05/21 09:38ID:???
「ページを超えて持ち運ばれるフラグ」ってログイン後はhiddenで、一時的に生成されたユニークなIDみたいなの物をフォームに混ぜて本人確認しているってこと??

perlでもできるよね。登録パスワードをフォームに混ぜちゃえばいいわけだし。
でもリファラー吐くブラウザだと他のサーバー行ったときにパスワードが入っているとまずいのか??
だから一時的な物を生成するの?
0120nobodyさん04/05/21 14:11ID:???
>>119
セッションはサーバーサイドでデータを保持するのが最大の特徴

「クッキーの逆のもの」と考えてもいいかも
クッキーもセッションも「ページを超えて持ち運ばれるフラグ」には違いないが、
そのデータそのものをどちらに保持するかが違う
クッキーはクライアントで保存し、データそのものを含む
だけどセッションの場合にはデータを保持するのはサーバー側で
クライアント側ではデータそのものは保持しない
(代わりにクライアントを識別するためのセッションIDを保持する必要はあるが)
POSTでhidden使って渡すのも、さらにGETでURI渡しするのも、
ページを超えて運ばれるフラグには違いないけど、これらも結局は
クライアント(ブラウザ)でデータを所持しているんだよね
0121nobodyさん04/05/21 23:41ID:???
>>120
何かまとまってないぞ(笑)

要するに毎回データそのものをクッキーなりHIDDENフィールドなりで
運ぶという方法と
そうではなく、識別情報だけをクライアントとサーバー間で往復させて、
サーバー側にハッシュテーブルのようなものでデータを預けて置くという方法
の2つがある。

ぶっちゃけそれだけ。
0122nobodyさん04/06/01 20:28ID:???
>>121
書いているうちに訳分かんなくなっちゃったw
最初の1行だけで済ませばよかったかな
0123nobodyさん04/06/01 22:09ID:???
>>119
サーバ側で生成したサーバ側でしか利用しない値は、
わざわざhiddenで引き回したりしない。つか、してはいけない。
セキュリティホールにもなりうるし。

そういう用途のために(サーバ側の) session を利用するという理由もある。
情報の分離(隠蔽)だな。
0124nobodyさん04/06/02 16:13ID:???
session_register("session_a");
$b=array(1,2,3);
$session_a[b]=$b;

として

session_start();
unset($session_a);

しても$session_a[b]が消えてなかったんだが、バグですか?


PHP Version 4.3.3です。
0125nobodyさん04/06/03 15:13ID:???
バグと言うか、仕様じゃないの?

session_unregisterの注意を読むと、
unsetではフォーカス内の変数のみを消去して、
セッション内の登録は継続されるようだから、
セッションを再開した時にセッション内の登録変数を読み出し直すだけでは?
つまりそのunsetは現在の$session_aを削除するだけで、
$_SESSION['session_a']は削除しないんではないかと。

つーか、
$session_a['b']=$b;
って書くべきだし(typo?)、
session_(un)registerは非推奨
0126nobodyさん04/08/20 09:10ID:rKFIPCr5
CGIに、PHPとPerlがあるんだけど、セッション管理は問題無くできるよね。
バージョンとか微妙なところで制限事項があるのかな?
0127nobodyさん04/08/20 15:48ID:???
はてさて、cookieに限定したセッションの話かしらん
0128nobodyさん04/08/22 18:42ID:TKt9TmhM
サイトに会員制の部分をつくりたいのですが、パスワードをセッション
変数として保持しながらページを作成していくと、javascriptの
history.back()を使用してページを戻るときに「有効期限切れ」と
なってしまいます。

フォーム入力確認で戻る必要があるのですが、どういった方法で
会員制にするのがよいのでしょうか?
0129nobodyさん04/08/24 16:45ID:mVJd0HpM
>128
history.backで戻ってセッション切れちゃうのは仕方ないね。
戻り先のページが別ページなら普通にリンク貼ればOKだと思うけど。。
0130nobodyさん04/08/24 16:52ID:???
結論
セッション(゚听)イラネ
0131nobodyさん04/09/02 15:49ID:???
言われただけの情報で結論出してセンスねえな〜、想像力ゼロか?
それでカッコイイと思ってんのか?キモイ奴だな。

php使ってんならJS使わなくてもリファラからファイル(スクリプト)名と
必要ならクエリだけ取り出してリンクさせたらセッションも生きたままで
可変式のBACKボタンが生成できるだろ?

もっとも同一ドメイン内での話だけどな。
0132nobodyさん04/09/03 00:37ID:???
>>59
亀レスだけど、目から鱗。今日悩んでいたことが氷解した。
解説書に書いてあることが間違ってたよヽ(`Д´)ノ
とにかく、一言言わせてくれ。どうもありがとう。
0133nobodyさん04/09/03 09:53ID:???
ssl通信下でのみsessionIDをクライアント・サーバ間でやりとりする形で無い限り
セッションハイジャックの危険性は常につきまとうと思うのだが、
PCサイトならばcookieにsidを食わせて、sidの確認が必要なページのみsslで通信すれば
良いと思うが、携帯サイト等でsidをURLに引き連れまわす必要がある場合
全ページsslで通信という形にするしかないと思うのだが、どうしてる?
0134nobodyさん04/09/03 10:05ID:???
>>133
セッションに接続元のIPを記録しておいて
if ($_SESSON['ip'] != $_SERVER['REMOTE_ADDR']) {
die 'あぼーん';
}
0135nobodyさん04/09/03 10:14ID:???
>>134
携帯サイトでクライアントをIPで判断できないでしょ?
キャリア側のプロキシのIPだらけになるのでは?
PCサイトの場合でもIPでの判断だと、NATの内側のクライアントは一纏めにしちゃうの?
0136nobodyさん04/09/03 13:24ID:???
>>136
PCの場合はCookieオンリー前提で書いてました。説明不足すんません。
携帯は端末とプロキシのIPは一対一対応だと思ってたんだけど、もしかして違います?
(IPアドレス自体はセッションごとに変わりますが)
だったらこの方法は使えませんね。う〜ん。

現行の3G携帯(というか、そのサーバー)はFOMAを除いてCookieに対応してますが
シェア最大のドコモがこれでは将来的にも難しいですね・・・。

個人情報など、重要なデータをセッションで使うときは最初から最後までSSLで通信して、
漏れてもあまり困らないデータは普通にセッションを使うしかないのかな。
Amazonなんかはそうなってるみたいですね。
0137nobodyさん04/09/05 23:33ID:5TcSHTQS
age
0138nobodyさん04/09/06 14:10ID:???
>>133
まず前提からして間違ってる。

>PCサイトならばcookieにsidを食わせて、sidの確認が必要なページのみsslで通信すれば
>良いと思うが

良くない、cookie値はglobal変数「$_REQUEST」として常にサーバへ渡っている。
したがって、cookieに設定したセッションIDを必要とする時のみSSL通信下で行っても、
それ以外のページではsidは平文でネットワークを流れる事になる。
0139nobodyさん04/09/27 20:49:22ID:???
結局、全てをSSLで通信しないとセッションハイジャックは防げないということでFA?
0140nobodyさん04/09/28 01:10:51ID:???
あてずっぽう
0141nobodyさん04/09/28 17:26:54ID:???
      は、
■ このスレッドは過去ログ倉庫に格納されています