03/09/24 19:32 SnRvXmpI.net
いちいちセッションの機能使わなくてもよく考えたら、
IPをキーにして
普通につくれるじゃん。。
と思ったんんだけどどうう?
3:nobodyさん
03/09/24 20:24 .net
1、スレ建て宣言…………1
2、開会の辞………………1
3、煽 り………………住人有志
4、逝ってよし……………1
5、御前もな………………住人有志
6、決意表明………………1
7、祝電披露………………1の家臣
8、来賓挨拶………………1の母親
9、来賓挨拶………………1の主治医
10、余興……………………もな踊り保存会
11、余興……………………1騙り太夫
12、送辞……………………大検
13、答辞……………………1
14、板歌斉唱………………全員
15、閉会の辞………………スレッドストッパー
16、終了宣言………………ひろゆき(削除忍代読)
4:nobodyさん
03/09/24 22:39 .net
早くPHP5出ないかなぁ・・・。
5:nobodyさん
03/09/24 22:40 .net
>>2
世の中の全端末にグローバルIPアドレスを付与出来るようになったのなら、それでも良いんだろうけどな。
NATやNAPT、プロキシサーバなんてもんが存在してしまうわけだ。
6:sage
03/09/24 23:20 .net
>>5
それって何か問題ある?
7:nobodyさん
03/09/24 23:48 .net
完全ではない、という問題。
8:sage
03/09/25 00:23 .net
IPが変わる可能性がある、ということだよね。
変わらなければ問題はない。
けれども変わるから完全ではない。
でも用途によれば、問題なく利用できるよね。
使う目的によって、価値も変わってくるということだ。
9:nobodyさん
03/09/25 00:41 ZJmN+3d3.net
あげ
10:nobodyさん
03/09/25 00:57 .net
セッションだけで1000まで逝くか?
11:sage
03/09/25 02:07 .net
実際、、どうやったら、セッションの代わりになるんですか?
誰かおしえてちょんまげ
12:nobodyさん
03/09/25 10:43 .net
IPが変わるとか、ブラウザの起動中だけとか言ってるけど
問題はその逆。
同じアドレスで複数の人がアクセスする可能性
同じクライアントで別人がアクセスする可能性
これがあるから、そのままでは使えない
13:sage
03/09/25 17:47 .net
っていうかIPをキーにするんじゃなくて、クッキーをキーにしたら、
セッションと同じ機能をまるごとつくれるんじゃないか?
14:sage
03/09/25 17:49 .net
>>12
同じクライアントで別人がアクセスする可能性
セッションでもそれが言える罠。
15:nobodyさん
03/09/25 18:38 .net
なんだこのレベルの低さは
16:nobodyさん
03/09/25 19:19 .net
>>14
いやだから、ログアウトやブラウザ閉じたら無効にする機能が必要
17:sage
03/09/25 19:28 .net
>>16
クッキーの有効期限を0にしたら同じじゃないの?
18:nobodyさん
03/09/25 19:43 T3dpzMyk.net
イイヨーイイヨーあげ
19:nobodyさん
03/09/25 21:11 .net
今どきクッキーでセッション管理してモナー
20:nobodyさん
03/09/25 22:05 .net
>>8
アホか。
21:nobodyさん
03/09/26 00:02 .net
オマエラなぁー、せめて↓くらいひととおり見ろよ、とりあえず。
PHP マニュアル:セッション処理関数(session)
URLリンク(php.planetmirror.com)
クッキー仕様書日本語訳
URLリンク(www.futomi.com)
22:nobodyさん
03/09/27 07:48 efY9iLPN.net
「ブラウザの戻るボタンで戻ってリロード→2重処理」
の回避策にsession使ってるけど邪道?
23:nobodyさん
03/09/27 10:39 .net
>>22
素直にDBの主キーと比較するとかもあると思うけど、それほど邪道でもないかと。
複数ページでのつながりを確保するのが目的だからな。
24:nobodyさん
03/09/27 20:12 76PBBTl7.net
>>22
sessionでチェックという以前に、
遷移先画面にリダイレクトさせて、戻れなくするのが基本じゃないのかなぁ??
25:直リン
03/09/27 20:13 fK1fC/Fc.net
URLリンク(www.leverage.jp)
26:nobodyさん
03/09/27 20:30 .net
>>24
エラーが出たとき入力内容が一切合切消えるのは非常に迷惑。
27:nobodyさん
03/09/28 22:13 .net
>>26
言ってる意味がよくわからん
それって、クライアント側のバッファ利用の問題で、二重投稿処理とは関係ない
28:nobodyさん
03/09/28 22:40 .net
戻れなくして不便を強いられるより、そういう配慮をしてくれる
ところのほうが好感が持てますね
29:nobodyさん
03/09/30 15:43 2jXpVkA5.net
age
30:nobodyさん
03/10/01 12:48 .net
php
31:nobodyさん
03/10/01 18:29 MgXABHqI.net
sesson
32:nobodyさん
03/10/01 18:45 H4wYblVH.net
Yahooのサイトでは、クッキーを使ったセッションで認証をやってて、クッキーが分かっても設定されてるクッキーが
Yahooドメインかどうかを判断して不正ができないようにしているみたいですが、これってクラックの危険性はありますか?
大丈夫そうだったらウチのサイトでも導入しようかと考えてます。
33:nobodyさん
03/10/01 19:14 .net
危険が無いわけじゃないが、あちこちで使われている手法だし
対策はされている。
34:nobodyさん
03/10/02 04:12 jb4S4+xE.net
session_startってやらないと、$_SESSって呼び出せないの?
35:nobodyさん
03/10/04 01:01 8tSg2rjL.net
>>34
php.ini
36:nobodyさん
03/10/04 07:34 .net
レベルの低さからしてネタスレか?
37:nobodyさん
03/10/05 22:20 .net
>>36
>>2から10個ぐらいの書き込み見ると、完全にネタスレだと思ったけど、
その後、ベタっぽい低空飛行で展開されているようなので、俺も判断に苦
しんでる。
38:age
03/10/11 00:19 .net
>>22,26,28,33
などは、典型だが、良い子は、まねしないでね。晒し上げ。
39:nobodyさん
03/10/11 00:23 .net
根拠を書かない>>38を晒しあげ
40:nobodyさん
03/10/11 00:39 .net
phpマニュアルのセッション関数(セキュリティ部分)を抜粋してみたYO。
------------------------------------------------------------------------------
セッションとセキュリティ
外部リンク: Session fixation
セッションモジュールは、セッションに保存した情報を見ることができるのが
そのセッションを作成したユーザーだけであることを保証することができません。
セッションの完全性を積極的に守るには、そのセッションに 紐づく値に応じた追加措置が必要です。
セッションに運ばれるデータの重要性を評価し、必要な保護策を講じて下さい。
これには通常、お金があかり、ユーザの利便性を損なうことになります。例えば、簡単な
社会工学的な策略からユーザを守るためには、 session.use_only_cookiesを有効にして下さい。
この場合、ユーザ側でクッキーは無条件に有効となっている必要があり ます。そうでない場合、
セッションは動作しません。
存在するセッションIDが第三者に洩れる手順は何種類かあります。
洩れたセッションIDにより、第三者が特定のIDに関連する全てのリソースにアクセスできるように
なります。まず、セッションIDがURLにより伝 送される場合です。外部サイトにリンクを張っている場合、
外部サイト のreferrerログにセッションIDを含むURLが保存される可能性があります。
第二に、よりアクティブな攻撃者がネットワークのトラフィックをモニターしている可能性があります。
セッションIDが暗号化されていない場合、セッションIDはネットワーク上を平文テキストで伝送されます。
解決策はサーバ上にSSLを実装し、確実にユーザに適用することです。
-------------------------------------------------------------------------------
41:nobodyさん
03/10/11 08:32 .net
>>40
で?
そんな分かりきった事をのっけて何が言いたいの??
42:nobodyさん
03/10/11 10:46 f+KUGOmH.net
>>41
初心者には分かりきったことではないんでしょう。
なぜつっかかるのかわからん。
43:nobodyさん
03/10/11 21:38 .net
>>42何が言いたいかわからん、ということを言いたいのじゃないのか?>>41は
44:参考
03/10/12 02:38 hB6ZK8LU.net
貧弱なセッション管理について
URLリンク(www.atmarkit.co.jp)
・セッションハイジャック
・Session Fixation攻撃
45:nobodyさん
03/10/12 02:43 hB6ZK8LU.net
>>39
キャッシュを public にすると、そのままブラウザ閉じても、そのURLを開けばまた
情報が出てくるからじゃないの?
46:nobodyさん
03/10/12 02:47 .net
キャッシュの話と>>28は関係ない
>>28は戻るボタンを用意して、内容を復元する配慮をしてくれと
言ってるので、ブラウザの戻るでのキャッシュを使えとは言ってない
47:nobodyさん
03/10/12 02:51 .net
>>33もあれだな。
クラックの危険があるから通常は対策していると言ってるので
指摘される理由がわからんな
48:nobodyさん
03/10/12 03:08 mzy4uQ15.net
セッションが使えるケータイってありますか?
ちなみに、J-PHONE J-SH05ではダメみたいです。
49:nobodyさん
03/10/12 03:14 hB6ZK8LU.net
>>48
セッションの仕組み一度自分で作ってみたらどう?と思ったよ
50:nobodyさん
03/10/14 21:07 /RUyf6Fs.net
session_set_save_handler()でDB(MySQL)にセッション情報を保存して管理する処理を
書いて普通にうまくいってたのですが、idを毎回変えたくて
URLリンク(www.asahi-net.or.jp)
を参考に、疑似 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はここをヒントにしました。
URLリンク(itbtech.itboost.co.jp)
DBじゃなく、普通のファイル管理ではうまく動きました。
環境は、RedHat8.0, PHP-4.2.2, MySQL-3.23.56です。
51:nobodyさん
03/10/14 21:11 /RUyf6Fs.net
訂正:session_switchingの2行目
if (!session_destroy()) {
↓
if (session_destroy()) {
52:nobodyさん
03/11/13 18:52 .net
生きてるか?w
53:nobodyさん
03/11/19 18:30 .net
ハイ
54:nobodyさん
04/01/08 05:26 K/SrUI+S.net
アゲ
実際の所さCOOKIE無効のクライアントでも同一か認識できるから
俺はCOOKIEへの保存をセッションに保存してるわけだが
邪 道 か な ?
55:nobodyさん
04/01/09 19:32 .net
良いんでない? 俺もそうするときがあるよ。
56:ななしくん
04/01/27 22:58 vdgC7W+O.net
セッション使ったプログラムかいてたんだけどさ、
使い方があまりにも簡単すぎて($_SESSIONとクッキー使った場合)
こっちは身構えてるので、逆に解説とかがわかりにくかった(藁
57:nobodyさん
04/01/28 03:07 IiAYAwD1.net
>>56
確かにセッション使うのは楽だけど、
動作原理はしっかり理解する必要があるよ。
58:ななしくん
04/01/28 06:10 .net
>>57
様々な解説書サイトなどはそういう意図で、原理を説明されてるんだとは思います。
なんか、「どう使うか!!!」がなかなかわからなかったんですよ(藁
59:nobodyさん
04/01/28 08:42 .net
オイラも初めてセッションを使い始めた時は、>>58と同じような感じだったなぁ。
セッションが機能するのに何ページ必要かとか悩んだ悩んだ。
a.html フォーム
|
b.php session_start(); $_SESSION['data']='a';
|
c.php sessin_start(); $data = $_SESSION['data'];
60:nobodyさん
04/01/29 07:51 .net
同じく。実際やってみて思っていたより激しく簡単だったので
自分がやってることが、全然見当外れなのではないかと思ったりも。
もしかしたら、そうなのかもしれない。
一応自分の思ったとおりに動作しているし、人にチェックしてもらっても
ちゃんと動作していると彼は言う…。
>>57
使い方だけで、まだ原理とかあやふやなので
ちゃんと勉強してみようと思います。
61:nobodyさん
04/02/01 18:12 LMIdhuo4.net
>>54
どうやってクライアントを認識しているのか教えてほしいage
62:nobodyさん
04/02/12 11:51 acZilhbS.net
以前作ったショッピングサイト(注文数50件強/日※PHPではない)はクッキーでセッション管理してるけど、
カートに商品が入らないという問い合わせが、頻繁ではないがどうしても尽きない。
結局、クライアント側の設定に依存するし、やはり客に色々設定を強いるのはどうかと思う。
次やるとしたらamazonのようにURLに渡して管理したいけど、カート以前のページは
よほど商品数が多くない限り、一般的に静的に作りますよね?
そこで、URLでセッション管理したいがために、静的HTMLで済むものを、全部PHPで動的に
出力するのは馬鹿げた考えでしょうか?
63:nobodyさん
04/02/12 16:36 .net
>>62
いいんじゃない?
URLにセッションIDとか渡すのって普通だと思う。
64:nobodyさん
04/02/14 08:52 .net
俺はPHPじゃなくてJSPだが、静的ページも全部JSPだよ(商用)。
PHPでも同じようなことしてるひといるでしょう。
65:nobodyさん
04/02/14 17:19 X1Wwd0H+.net
$_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
66:nobodyさん
04/02/14 19:01 1TD2enu0.net
こんにちは、PHP、Apacheという構成でi modeでセッション管理を行うことは可能なのでしょうか、可能であるとすればphp.iniやhttpd.conf等の設定部分や、またPHPスクリプトに特に留意するポイント等あれば教えて下さい。
67:nobodyさん
04/02/17 21:52 .net
できるけどGETでのセッション管理なんで認証とかにはつかっちゃ駄目
68:nobodyさん
04/02/18 22:47 .net
>>62
Amazonのように作るならOKじゃないの。
あれのカートは「誰の」という情報とは結びつかないようにしてあって、
会計の段階で「誰の」に結びつけるようにしてる。
# cookieが使える場合には、名無しさんAのカートのように、名無しさんも
# 区別して結びつけるけど。cookieに保存したセッションIDを使って。
その辺の個人情報や決済部分と切り離して設計できてれば
カート情報なんて商品リストの中から商品を選んだだけの存在だからね。
69:nobodyさん
04/02/19 21:15 .net
>>68cookieなしで amazon 使えるの?
70:68
04/02/19 23:37 .net
>>69
普通に使えますよ、カート機能自体はSIDがURLに付加されてますし。
cookieが使える場合はその他の機能がプラスされたり、
カート機能の照合補正が行われたり。結構上手く出来てると思います。
気にならない(気づかない)というところも上手いところ。
71:nobodyさん
04/03/04 23:25 .net
session_startした後にPOSTしたページに
戻るボタンで戻ったら有効期限切れってなるのは
どう言う解決法があるのですか?
72:nobodyさん
04/03/07 22:46 Nzwf/rJi.net
ホシュホシュ
73:nobodyさん
04/03/09 22:32 .net
おそレスですけど、
昔から、通販業者系はサーバサイドのセッション管理が標準だね。
74:nobodyさん
04/03/18 02:35 5cjOT2D0.net
セッションですか?!
私にお任せあれ!!!!!
75:nobodyさん
04/03/18 05:54 zQ2yHGPu.net
>>71
session.cookie_lifetime integer
session.cookie_lifetimeは、ブラウザに送信す るクッキーの有効期間を秒単位で指定します。値0は、"ブラウザを閉じ るまで"を意味します。デフォルトは、0です。 session_get_cookie_params()および session_set_cookie_params()も参照して下さい。
76:nobodyさん
04/03/18 09:33 SVbaZ9qT.net
ブラウザを閉じても1時間は有効であるように、
ini_set( 'session.cookie_lifetime' ,’3600’ );と記述しました。
書き方がおかしいでしょうか?
この書き方では、設定変更は出来ないようです。
Local Valueは3600に変わるのですが、Master Valueは0になっております。
Master Valueも3600には変わらないのでしょうか?
ini_setを使えばソースから書きかえられると思うのですが。
77:nobodyさん
04/03/18 10:37 .net
>>76
こっちのスレの方が相応しいけど、マルチポストいくないっ
78:nobodyさん
04/03/18 10:53 SVbaZ9qT.net
>>77
一言添えればよかったですね。
ちょっとこちらで質問させてください。
79:nobodyさん
04/03/18 12:14 .net
>>78
76の内容については向こうで既にレスが付いているが?
Local Valueではなく、Master Valueでないと駄目という理由が判らん。
値の優先度はLocal(高)、Master(低)。ディレクトリごと指定したいのなら、
Apacheの場合だと.htaccessを利用すれば良かろ
80:nobodyさん
04/03/18 14:49 SVbaZ9qT.net
ini_set( 'session.cookie_lifetime' ,’3600’ );と
記述して、セッションIDが追加されなくはなります。
しかし、// ini_set( 'session.cookie_lifetime' ,’3600’ );と
記述して設定をやめて、アップしても
セッションIDが作られないんです。
81:nobodyさん
04/03/19 15:09 .net
鯖を数日動かしてると、
セッションが不安定にならない?
漏れの鯖は三日くらいでセッションがプチプチ切れるようになる。
apacheを再起動すると治るけど、
コレってPHPの設定がおかしいからかな?
82:nobodyさん
04/03/19 17:48 .net
>>81
PHP のバージョンと OS は何?
Linux で PHP 4.2.x を使っていた頃に同じ状態で苦労したことがあるけど。
Apache の error.log に Segmentation Fault とかのログが残ってる?
83:nobodyさん
04/03/19 22:04 .net
>>82
child pid ***** exit signal Segmentation Fault
ログにはこんなもんがいくつか残ってました
OSはRedhatLinuxでapache1.3.27、PHP4.3.2です
なんか分かりますか?
84:82
04/03/20 00:30 .net
>>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 が出そうだけど。
まあ、クリティカルなシステムをバージョンアップするなら、
十分にテストしてからにした方がいいと思う。
85:nobodyさん
04/03/20 10:00 .net
>>84
どうもです
ああ、やっぱバージョンのせいなんですかね
セッション機能にはmmを利用しているんですが、
どうせ処理速度には大差がないだろうし、filesを検討します
そのうちPHP5が出てきそうですが、
焦って飛びつくのは危険そうですね
86:84
04/03/20 10:55 .net
>>85
PHP 4.2.x の頃に、パフォーマンス的に有利ということだったので、
session.save_handler = mm
にしていたことがあったけど、>>81 とほぼ同じ症状になった。
原因が分からず、随分悩んだ後、files に戻したところ、安定するようになった。
PHP 4.3.0 以降では確認していなかったけど、修正はされていないのかな。
87:nobodyさん
04/03/20 12:40 .net
いまfiles指定して動かしてみたところ、
特に処理速度にも問題ないし、とりあえず大丈夫
まあ今後>>81の症状がでるかどうかまだ分かりませんが・・・
でもコレはPHP4.3.2の問題じゃないかもしれませんね
apacheもlogrotateの時にサービスが落ちたりしますから
今じゃ毎朝cronでapacheを再起動してます(苦笑)
88:87
04/03/20 13:11 .net
自分で書いてて思ったんですが、
apacheがちょくちょく落ちるのってかなりやばいよなあ(汗)
OSのレベルからアップグレードを考えるいい機会かもしれない
89:86
04/03/20 13:35 .net
>>87
その状態だと、PHP の方が問題の可能性が高いと思う。
当時は、3日から 1週間にに一度再起動していたし、
apachectl で restart すると Apache が落ちてしまって、
apachectl start しないと起動しない状態になっていたので。
files に変更してからは、Apache が落ちることもなくなったので、
同じ問題だとすると、安定するかもしれないので、しばらく様子を
見てもいいかもしれない。
セキュリティ問題のこともあるので、簡単にバージョンアップできる
のであれば、バージョンアップした方がいいと思うけど。
90:nobodyさん
04/03/20 15:55 .net
>>86
mm ってなんですか?
当方セッション情報を MySQL に入れるハンドら作って動かそうとしているのですが、
既存のがあるんなら使っちゃおっかな~
91:nobodyさん
04/03/20 16:33 .net
>>90
maji mukatsuku
92:86
04/03/20 20:56 .net
>>90
セッションの保存用の共有メモリ。
URLリンク(jp.php.net)
mm を使うと不安定になるという話をしていたのだが、PHP の最新版では
修正されている可能性もあるので使いたいのならどうぞ。
mm をインストール(既にインストールされている Linux ディストリビューションもある)して、
URLリンク(www.ossp.org)
PHP の configure で --with-mm を指定してコンパイルする。
php.ini で
session.save_handler = mm
に変更して Apache を起動。
93:90
04/03/21 03:27 .net
おぉ!phpに既に用意されてるのね。さんきゅー
どれどれ・・ふむふむ・・
なーんだ、mmってモジュールの名前なのね・・
こっちか・・ URLリンク(www.ossp.org)
UNIXで動くのね・・どれどれ
#whereis mm
mm: /usr/ports/devel/mm
をを、Portsに入ってるジャン
んでも、こいつの動作検証せなあかんのか~めんどくさっ
以上5分で却下しますた。ごめん。
94:nobodyさん
04/04/02 20:40 .net
こんなんが出てくるんですけど・・・
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ドライブに作りますたがダメです。
なんででしょうか?
95:nobodyさん
04/04/02 20:46 .net
>>94
すんません!いきなり判明しました・・・
1行目を空白にしていたのが原因でした。
1: ←空白行にしていた
2:<?
3:session_start();
4:$_SESSION['register'] = 0;
5:
6:?>
1:<?
2:session_start();
3:$_SESSION['register'] = 0;
4:
5:?>
にしただけで治りました・・・
お騒がせしてすんません。
96:nobodyさん
04/04/04 21:49 zccZUASs.net
IE6でクッキー機能をOFFにしているのにセッションが使えてしまう。
PHPのSIDもOFFにしているのに・・・
なぜ?
・・・と書き込もうとしたら2chに書き込めないw
なぜ掲示板でクッキー必須なんだ?
97:nobodyさん
04/04/04 22:30 .net
>>96
見逃してるだけだよ。
セッションが使えているなら、cookieかURIパラメータの中に必ず埋め込まれている。
98:nobodyさん
04/04/04 23:29 .net
>>96
勘違いしてるだけだな。
99:nobodyさん
04/04/04 23:53 .net
>>96
コンテンツの中に埋め込む場合もあるけどね。
100:90
04/04/05 01:55 .net
セッションが使えていると勘違いしているに200$$
101:96
04/04/05 23:36 EigS3bMU.net
いや、セッションが使えてるのは間違いないのよ
<?php
echo $_SESSION["name"];
?>
とかでセッション情報をページに表示させるようにしてるから
URIパラメータもないし・・・
クッキーがコッソリ動いてるのか?とも思ったが、
2chに書き込みが出来なかったので、それも考えにくい・・・
自分のサイトだけクッキーが有効になってたのか?分からん・・・
102:nobodyさん
04/04/05 23:45 .net
テストに使用してるブラウザは?
IEでプライバシーポリシーうんにゃらで2chからのクッキー食べてくれないとか・・
103:nobodyさん
04/04/05 23:55 .net
Localだから
104:96
04/04/05 23:57 EigS3bMU.net
IE6でツール→インターネットオプション→プライバシー項目をMAXにして
「すべてのCookieをブロック」にしたのよ
ふつうコレでCookie機能は無効になるっしょ?
105:96
04/04/05 23:58 EigS3bMU.net
>>103
www
106:nobodyさん
04/04/06 00:01 lpi6f7xm.net
今やったらセッション使えなかったよ
なんやねんな
107:nobodyさん
04/04/06 00:34 .net
>>104
IEだけで動作チェックするのは間違い。
108:nobodyさん
04/04/06 02:28 .net
IEだけでしか使わない社内用とかならあり
んでも、Mozilla使った方が開発はしやすいぽ
109:107
04/04/06 05:26 .net
>>108
ちゃうちゃう。
最終的なユーザのことを考えた場合のチェックとしてはIEは外せないけど、
デバッグには向かないから使うなってこと。JavaScript系は特にデバッグしにくい。
但しJavaScriptの挙動はIEとMozillaは違うので、そこは留意しないと駄目。
XMLのチェックの部分では、IEの方が出来がいいと思う。
110:107
04/04/08 00:30 .net
そうだね~
XMLはIEの方が良い!
Mozillaのデバックコンソールってもう一声どうにかならんかなぁ
あとあと、CSSで幅の定義を1どっとずれて描画するのもどーにかならんかなぁ
はうっ!セッション関係無いし
111:108
04/04/08 00:31 .net
>>110 ごめん名前間違えたw
112:nobodyさん
04/04/14 12:42 .net
セッションとは、 フラグである・・・
ようやく気が付いた。
113:nobodyさん
04/04/14 14:05 vcn3L4Wo.net
>>112
セッションなんて言うからよく分からないんだよな。
「ページを超えて持ち運ばれるフラグ」って言えば分かり易いね。
114:教えてください・・・
04/05/16 22:13 dL8RQ1Kh.net
以下の環境を構築しています。
<環境>
サーバA:192.168.11.1 WinXP-Apache1.3.29+PHP4.3.4
サーバB:192.168.11.2 同上
やりたいことは、
①サーバAのLOGIN.PHPでログイン(=>LOGINFLG=ONを$_SESSIONに設定する)
②サーバBのxxxx.php($_SESSION[LOGINFLG」を見る)にアクセスする
->xxxx.phpが、$_SESSION[LOGINFLG」=ONを見て、PHPの参照許可を出す
という、セッション情報をサーバ間で持ち回るということをしたいんです。
条件として、
・セッションクッキーを使わない。
・Windows上(=mmが使えない)ということで、session.save_handler = filesを使う。
という状況なんですが、どうやれば、セッション情報の共有はできるんでしょうか・・
お教えください。。。
115:nobodyさん
04/05/16 22:43 .net
>114
セッションという機能がどういう風に実現されてるか、
またはどういう風にすれば実現出来るか考えてみれ
PHPのセッション機能は複数サーバ間で持ち越しすることは想定されていない(はず)なので、
書いてるようなことを実現したいなら、自分でセッション周りを作って、
セッション管理用のサーバを一つ用意すればいい。
が、そんなややこしいことするよりも、もっとスマートな解決法があると思うぞ。
根本的なとこから見直した方がいいと思う。
116:nobodyさん
04/05/17 18:19 .net
>114
DBは使わないの?
方法によっては簡単に出来るのに。
117:nobodyさん
04/05/17 23:43 .net
session.save_pathを指定しておいて、fsockopenするとか?
#勘違いっぽいのでsageておこう・・
118:nobodyさん
04/05/19 00:08 .net
つーかJavaみたいにphp5ではクラスにセッション情報を保持できるようになるんでしょうか?
119:nobodyさん
04/05/21 09:38 .net
「ページを超えて持ち運ばれるフラグ」ってログイン後はhiddenで、一時的に生成されたユニークなIDみたいなの物をフォームに混ぜて本人確認しているってこと??
perlでもできるよね。登録パスワードをフォームに混ぜちゃえばいいわけだし。
でもリファラー吐くブラウザだと他のサーバー行ったときにパスワードが入っているとまずいのか??
だから一時的な物を生成するの?
120:nobodyさん
04/05/21 14:11 .net
>>119
セッションはサーバーサイドでデータを保持するのが最大の特徴
「クッキーの逆のもの」と考えてもいいかも
クッキーもセッションも「ページを超えて持ち運ばれるフラグ」には違いないが、
そのデータそのものをどちらに保持するかが違う
クッキーはクライアントで保存し、データそのものを含む
だけどセッションの場合にはデータを保持するのはサーバー側で
クライアント側ではデータそのものは保持しない
(代わりにクライアントを識別するためのセッションIDを保持する必要はあるが)
POSTでhidden使って渡すのも、さらにGETでURI渡しするのも、
ページを超えて運ばれるフラグには違いないけど、これらも結局は
クライアント(ブラウザ)でデータを所持しているんだよね
121:nobodyさん
04/05/21 23:41 .net
>>120
何かまとまってないぞ(笑)
要するに毎回データそのものをクッキーなりHIDDENフィールドなりで
運ぶという方法と
そうではなく、識別情報だけをクライアントとサーバー間で往復させて、
サーバー側にハッシュテーブルのようなものでデータを預けて置くという方法
の2つがある。
ぶっちゃけそれだけ。
122:nobodyさん
04/06/01 20:28 .net
>>121
書いているうちに訳分かんなくなっちゃったw
最初の1行だけで済ませばよかったかな
123:nobodyさん
04/06/01 22:09 .net
>>119
サーバ側で生成したサーバ側でしか利用しない値は、
わざわざhiddenで引き回したりしない。つか、してはいけない。
セキュリティホールにもなりうるし。
そういう用途のために(サーバ側の) session を利用するという理由もある。
情報の分離(隠蔽)だな。
124:nobodyさん
04/06/02 16:13 .net
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です。
125:nobodyさん
04/06/03 15:13 .net
バグと言うか、仕様じゃないの?
session_unregisterの注意を読むと、
unsetではフォーカス内の変数のみを消去して、
セッション内の登録は継続されるようだから、
セッションを再開した時にセッション内の登録変数を読み出し直すだけでは?
つまりそのunsetは現在の$session_aを削除するだけで、
$_SESSION['session_a']は削除しないんではないかと。
つーか、
$session_a['b']=$b;
って書くべきだし(typo?)、
session_(un)registerは非推奨
126:nobodyさん
04/08/20 09:10 rKFIPCr5.net
CGIに、PHPとPerlがあるんだけど、セッション管理は問題無くできるよね。
バージョンとか微妙なところで制限事項があるのかな?
127:nobodyさん
04/08/20 15:48 .net
はてさて、cookieに限定したセッションの話かしらん
128:nobodyさん
04/08/22 18:42 TKt9TmhM.net
サイトに会員制の部分をつくりたいのですが、パスワードをセッション
変数として保持しながらページを作成していくと、javascriptの
history.back()を使用してページを戻るときに「有効期限切れ」と
なってしまいます。
フォーム入力確認で戻る必要があるのですが、どういった方法で
会員制にするのがよいのでしょうか?
129:nobodyさん
04/08/24 16:45 mVJd0HpM.net
>128
history.backで戻ってセッション切れちゃうのは仕方ないね。
戻り先のページが別ページなら普通にリンク貼ればOKだと思うけど。。
130:nobodyさん
04/08/24 16:52 .net
結論
セッション(゚⊿゚)イラネ
131:nobodyさん
04/09/02 15:49 .net
言われただけの情報で結論出してセンスねえな~、想像力ゼロか?
それでカッコイイと思ってんのか?キモイ奴だな。
php使ってんならJS使わなくてもリファラからファイル(スクリプト)名と
必要ならクエリだけ取り出してリンクさせたらセッションも生きたままで
可変式のBACKボタンが生成できるだろ?
もっとも同一ドメイン内での話だけどな。
132:nobodyさん
04/09/03 00:37 .net
>>59
亀レスだけど、目から鱗。今日悩んでいたことが氷解した。
解説書に書いてあることが間違ってたよヽ(`Д´)ノ
とにかく、一言言わせてくれ。どうもありがとう。
133:nobodyさん
04/09/03 09:53 .net
ssl通信下でのみsessionIDをクライアント・サーバ間でやりとりする形で無い限り
セッションハイジャックの危険性は常につきまとうと思うのだが、
PCサイトならばcookieにsidを食わせて、sidの確認が必要なページのみsslで通信すれば
良いと思うが、携帯サイト等でsidをURLに引き連れまわす必要がある場合
全ページsslで通信という形にするしかないと思うのだが、どうしてる?
134:nobodyさん
04/09/03 10:05 .net
>>133
セッションに接続元のIPを記録しておいて
if ($_SESSON['ip'] != $_SERVER['REMOTE_ADDR']) {
die 'あぼーん';
}
135:nobodyさん
04/09/03 10:14 .net
>>134
携帯サイトでクライアントをIPで判断できないでしょ?
キャリア側のプロキシのIPだらけになるのでは?
PCサイトの場合でもIPでの判断だと、NATの内側のクライアントは一纏めにしちゃうの?
136:nobodyさん
04/09/03 13:24 .net
>>136
PCの場合はCookieオンリー前提で書いてました。説明不足すんません。
携帯は端末とプロキシのIPは一対一対応だと思ってたんだけど、もしかして違います?
(IPアドレス自体はセッションごとに変わりますが)
だったらこの方法は使えませんね。う~ん。
現行の3G携帯(というか、そのサーバー)はFOMAを除いてCookieに対応してますが
シェア最大のドコモがこれでは将来的にも難しいですね・・・。
個人情報など、重要なデータをセッションで使うときは最初から最後までSSLで通信して、
漏れてもあまり困らないデータは普通にセッションを使うしかないのかな。
Amazonなんかはそうなってるみたいですね。
137:nobodyさん
04/09/05 23:33 5TcSHTQS.net
age
138:nobodyさん
04/09/06 14:10 .net
>>133
まず前提からして間違ってる。
>PCサイトならばcookieにsidを食わせて、sidの確認が必要なページのみsslで通信すれば
>良いと思うが
良くない、cookie値はglobal変数「$_REQUEST」として常にサーバへ渡っている。
したがって、cookieに設定したセッションIDを必要とする時のみSSL通信下で行っても、
それ以外のページではsidは平文でネットワークを流れる事になる。
139:nobodyさん
04/09/27 20:49:22 .net
結局、全てをSSLで通信しないとセッションハイジャックは防げないということでFA?
140:nobodyさん
04/09/28 01:10:51 .net
あてずっぽう
141:nobodyさん
04/09/28 17:26:54 .net
は、
142:nobodyさん
04/09/28 18:58:14 .net
防げ
143:nobodyさん
04/09/29 14:00:46 Gp3joNGA.net
お上(経産省-産総研)はすべてのページをhttpsにしてcookieにsecure属性を付けるか
もしくはhttp用のcookieとhttps用のcookieの二つを発行しろと言ってるね。
URLリンク(securit.gtrc.aist.go.jp)
ことネットワーク絡みの話に関しては、お上とその周辺が出してる情報は
とても役に立つよ。
144:nobodyさん
04/10/06 22:15:29 .net
基本的なことでスマンがセッションって何?
145:nobodyさん
04/10/07 21:46:09 eGrZpUzk.net
セッションってどこに保存されるの?
146:nobodyさん
04/10/07 22:01:55 .net
tmp
147:nobodyさん
04/10/07 22:05:54 .net
session.save_path
148:nobodyさん
04/10/07 22:28:49 .net
サーバー側に保存されるんだよね?
セキュリティ的にはどうなんだろう?
149:nobodyさん
04/10/07 22:40:45 .net
>>148
レン鯖でもセーフモードかCGI+suEXECでsession.save_pathを適切に設定してれば大丈夫。
ちなみにメモリやデータベースにセッションを保存するようにもできる。
URLリンク(jp.php.net)
150:nobodyさん
04/10/07 22:54:49 .net
ただ、PHPはセッションIDにcookieを使う際にsecure属性をつけられないので
個人情報を扱うようなときはセッションを使うドメイン全体をSSLで保護するか
$_SESSIONを使う代わりにIDの発行からデータの出し入れまで全部を独自に管理しないといけない。
151:nobodyさん
04/10/07 23:27:27 .net
む、難しいな orz
152:nobodyさん
04/10/07 23:33:22 .net
大丈夫、実際そこまでちゃんと気ぃ使ってるサイトなんてほとんどないからw
153:nobodyさん
04/10/08 00:39:22 .net
>>150
>ただ、PHPはセッションIDにcookieを使う際にsecure属性をつけられないので
PHP 4.0.4 以上だったら付けられる。
php.ini で
session.cookie_secure = 1
とするか、
URLリンク(jp2.php.net)
session_set_cookie_params()
で設定。
URLリンク(jp2.php.net)
154:nobodyさん
04/10/08 00:56:47 .net
素で知らんかった。マジありがとう。
155:nobodyさん
04/10/08 01:37:35 .net
>>153
setcookieの最後の引数で指定でもいい?
この場合setするcookieのkeyによってセキュア属性のあるなしになるのかな?
156:nobodyさん
04/10/08 11:59:28 .net
>>155
setcookie() だと最後の引数で指定すれば個別に secure フラグありとなしで
複数の Cookie を設定できる。例えば、以下のような感じで。
setcookie('secure_on', 'test1', NULL, '/', NULL, 1);
setcookie('secure_off', 'test2', NULL, '/', NULL, 0);
正しく Cookie を処理できるブラウザだったら secure_on の方の Cookie は、
https 接続の時にしか送信されない。
157:nobodyさん
04/10/08 14:14:20 .net
>>143の
>もしくはhttp用のcookieとhttps用のcookieの二つを発行しろと言ってるね。
に関してはsetcookieの引数で分けるのが良さげかな。
うーん、携帯サイトでhttp://~~のショッピングサイトってかなりあるんかね。
気にしだすと怖いな。
GETのSIDをhttpとhttpsで切り替えるとか?イメージわかん…
158:nobodyさん
04/11/05 23:35:57 onIpwNyM.net
ヒロシです
MySQL使ってるんですが、
必要最小限の変数だけ session_register して
そのつどMySQLからデータひっぱってくるのと、
MySQLのデータ全て session_register しておくのでは
どっちがよかとですか?
ヒロシです
159:nobodyさん
04/11/07 18:16:49 .net
>>158
データの内容とアクセス頻度(規模)などによって一概にどっちが良いかは言えないし、
「良い」の基準が決まっていないとレスのしようもないんじゃない?
例)
・作成時に楽なら良い
・サーバー負荷を考えると良い
・セキュリティ的に安全だから良い
などなどなどなどなど・・・。
セッションの前に他のことを勉強しろよ。斬り。
160:nobodyさん
04/11/07 21:42:34 .net
ヒロシです
きれいに返されました。
セキュリティ・負荷面を重視しています。
よろしこです。
ヒロシです
161:nobodyさん
04/11/09 18:20:01 aEAOTgZ1.net
アンケートページのフォームのValue値をセッションに入れて各ページ間で持ち回りってアブない?
162:nobodyさん
04/11/12 12:40:22 2kt36js1.net
PHPでセッションを使って管理ページに入りページの更新やメール配信などをしています。
使用人数は10人です。
OSは基本的にwindowsでバージョンはXPや98など様々です。
ページの更新などをする際に5分くらいでセッションが切れます。
ほぼ10人ともその状態です。
セッションが頻繁に切れる原因とかってありますか?
漠然とした質問で申し訳ないでつ。。
163:nobodyさん
04/11/12 13:38:08 .net
Perlのセッションについて語るすれはどこですか?
164:nobodyさん
04/11/12 14:19:13 .net
>>162
これが参考になるんじゃないかな
URLリンク(www.asahi-net.or.jp)
165:nobodyさん
04/11/16 15:55:39 .net
このスレだけでご飯一杯食べれました。
166:nobodyさん
04/11/16 16:34:38 .net
食前酒みたいなスレやなw
167:nobodyさん
04/11/17 21:13:10 K1rG9sHP.net
ヤフーのセッション管理の仕組みって、どうなってるんでしょうか。
ページ移動するたびにDBにアクセスしてCookieと照合してます?
168:nobodyさん
04/11/19 11:05:17 .net
セッションで扱いたいクラスそのものをシリアライズして、セッションIDをKeyにし、
DBへ登録して使っている人って結構いる?
それともメモリー的にとか、DB容量的にとか、処理的に冗長だとかで、むしろ無駄?
169:nobodyさん
04/11/19 15:38:04 .net
Perlで固定のリクエスト投げるHTTPクライアント作ってるのですが、
返ってくるセッションクッキーをどうにかしてブラウザに食わせたいと思ってます。
firefoxのクッキーファイルに書き込むだけではだめでした。
expires付のクッキーはうまくいくのですが…
これを解決する手段はないものでしょうか?
Perlかどうかはどうでもよく、セッションクッキーの話なのでこちらに書き込みました。
もしもっと適切なスレがあれば是非教えてください。
170:nobodyさん
04/11/21 01:16:45 .net
>>169
どうも混乱しているようにしか見えないのだが…
HTTPクライアント作ってるって時点で「板違い」
セッションクッキーってのも意味わかんないし、
まずはセッションは何たるか、クッキーは何たるかを理解してから出直してね。
もしくは169の認識してる「セッションクッキー」と「クッキー」の違いを言ってみ。
171:nobodyさん
04/11/24 00:14:55 6VcNevlw.net
>セッションクッキーってのも意味わかんないし
確かに「セッションクッキー」はセッションと言うにはアレかも知れんが、
簡易なセッションを実現するものではあるし、
なにより、みんな「セッションクッキー」って呼んでるじゃん。
で、普通、「セッションクッキー」に対して、単に「クッキー」って呼ぶのは、
「パーマネントクッキー(169曰く、expires付のクッキー)」でしょ。
172:nobodyさん
04/11/24 06:52:52 .net
>>169
セッションクッキーで通じるから別にいいけど
確かに用語の使い方がいろいろ不明な点があって
日本語として文が構築されてない
173:nobodyさん
04/11/24 09:17:36 .net
会員制のサイトつくるとき
セッションIDだけで管理してる?
セッションIDだけだと怖いので
ログインIDと暗号化したパスワードも
セキュアクッキーに書いて
毎回DBと比較してる。
これってやばい?
174:nobodyさん
04/11/24 14:09:50 .net
>>173
やばくはないと思うが
それじゃセッションIDを使う意味があまりなくね?
セッションIDの発行方法にもよるけど
PHPのセッション関数使ってるなら大丈夫じゃないの?
175:173
04/11/24 15:43:40 .net
>>174
レスありがとうございます
ログイン前の匿名情報(ショッピングカートのようなもの)を
セッションIDで管理、
ログイン後の情報はセッションだとちょっと怖いので
セキュアクッキーでアクセスの度に毎回ログインチェックをしてます。
セッションIDだけで
クライアントを特定するのって
会員制のようなサイトでも普通なんでしょうかね?
176:nobodyさん
04/11/25 03:52:30 .net
>>175
個人的な構築法としてはセッションIDとログイン情報を関連付けて
セッションIDきたらログイン情報みて毎回チェックするけど
規模がデカイ or サーバしょぼい 場合は毎回チェックするとレスポンス落ちるから
Yahooみたいに重要な処理のときだけログインチェックみたいな形にしてる
けど173のケースだとログイン前からの情報とも連携するみたいだし
それならセッションIDとcookie使ってても納得できる
毎回ログインチェックするのに越したことはないけど
やっぱりサーバのスペック的な問題でレスポンスが結構影響でてくるから
重要なページ(個人情報変更)とかだけ認証っていう形でもありじゃないかな?
良いセッションの使い方があれば他の人フォロー頼みます。
177:nobodyさん
04/11/26 20:15:19 5ndPRR48.net
PHPセッションを生成した段階で、接続元IPを保持すれば、少なくとも
全く異なるネットワーク&端末からの接続は排除できる。
(NAT環境とか一部のCATV環境からのアクセスはどうしようもないけど)。
で、その上でブラウザバージョンとか「相手から送られてくる情報」を、
『セッション単位のワンタイム情報』として管理すればかなりいけるんでない?
まぁ、金銭扱う場合は「やりすぎ」ってのはないだろうけど、使う側の利便性を
考えればワンタイム情報として上記を扱う(+独自のスパイス)でほぼ安全でしょう。
178:173
04/11/26 20:37:10 .net
>>176
やっぱりサーバ負荷は一番気になるとこですね。
たいへん参考になりました。
ありがとうございました。
>>177
大企業などアクセスのたびに
毎回IPアドレスが変わる環境もあるから
だめじゃないかな?
179:nobodyさん
04/11/27 05:47:30 pSdshSFH.net
>>178
> 大企業などアクセスのたびに
> 毎回IPアドレスが変わる環境もあるから
> だめじゃないかな?
そんな場合、HTTPに限らず他のサービスでも認証が絡む奴は
大問題になりそうな希ガス...
気のせい?
180:nobodyさん
04/11/27 07:24:52 GhxEggFV.net
>>179
IPで認証するの?
181:nobodyさん
04/11/27 13:53:20 .net
>>179
そういう仕組みですから
みんなそれを前提につくってるんだよ
182:nobodyさん
04/11/27 14:23:13 .net
>>179
今更何を言ってるんだ?
183:nobodyさん
04/11/28 09:37:50 .net
そっか、世間ではFTPとかtelnet/sshとか、そんな奴にもクッキーセッションみたいな
「IPが変わってもサービスを継続する」実装が結構あるんですね。
確かに作っちゃえば可能だなー>セッション管理
ちょっと遊んでみよう(w
184:nobodyさん
04/11/28 17:21:57 .net
>>183
FTPとtelnet/SSHはステートレスなプロトコルではないので
セッション管理自体要らんと思う
185:nobodyさん
04/11/28 23:38:51 .net
$_SESSIONに"cid"っていう名前で登録しちゃいけないの?
他の変数は無事なのに、これだけたまに消えるんだけど…
186:nobodyさん
04/11/29 12:38:23 .net
>>184
>>178
> >>177
> 大企業などアクセスのたびに
> 毎回IPアドレスが変わる環境もあるから
> だめじゃないかな?
アクセスの度に変わるんだぜ?
Connection張りにきたからってACK返そうにも
すでにIPアドレスが変わっているんだぜ?
って、釣りか....>>178
187:nobodyさん
04/11/29 14:14:13 .net
>>186
それじゃインターネットに繋がってるだけで送受信できないし
ACK返す前に変わるとかそんなシステムあるの?
1回セッションした後でIP変わってもう一度セッションしたときに
どうなるかだろ
そもそも接続元IPを使ってどーのこーのって
今の時代に使ってるところないだろ
188:nobodyさん
04/11/29 16:37:42 .net
>>187
セッション汁!?
>>186
なんかかみ合ってない。
どういう意見なの?
できればはじめての発言でないなら前のレス番使ってくれ。
189:nobodyさん
04/11/29 22:17:54 .net
>>188
その回答は>>178だけが知っている。
「毎回IPアドレスが変わる環境」の“毎回”って何よ?
190:nobodyさん
04/11/30 01:20:22 .net
URLリンク(yougo.ascii24.com)
黙って読め
191:nobodyさん
04/11/30 09:58:03 .net
>>189
もしかして
「ダイアルアップする度の間違いだろ」
とか思ってないよね?w
192:nobodyさん
04/11/30 12:42:02 .net
>>190
「アクセスの度」っていう「アクセス」の定義が不明なんじゃない?
セッションはその通りだけど、PHPのセッションとはまたちょっと違う気がする。
HTTPセッションが切れても状態を引き継ぐための一例としてPHPセッションが
有るんじゃないの?
193:nobodyさん
04/11/30 14:41:16 .net
>>192
セッションが切れてない間は
IPアドレスが変わらないって言いたいの?
なにが言いたいのか
結論を書いてくれないと
話しが終わらないんだけど
194:nobodyさん
04/11/30 21:15:35 .net
>>193
さっさと話を終わらせてくれって言いたいの?
ならそう言えよ
195:nobodyさん
04/11/30 22:03:43 .net
>>193
逆でしょ?
「IPアドレスが変わっても(サービスのために)セッションを切らない」
為の仕組みが「PHPセッション」な訳ですよ。
つか、「セッション」の定義を表現せねばなるまいね。
IPセッションなのか、HTTPセッションなのか。
196:nobodyさん
04/11/30 22:54:22 .net
>>195
激しく同意!
ってかセッションってWEBでのセッションはHTTPセッションで
PHPセッションとかってセッション管理だろ
Perl=CGIみたいな初心者的勘違いだな
けど>>186とかACKが帰ってくる前にIP変わるわけだから
これはセッション自体成り立たない
>>192
それはセッション管理だろ
197:nobodyさん
04/12/01 11:09:14 .net
どれがだれの発言なんだか
全くわからん
1人の自演だったらすごいけど
198:nobodyさん
04/12/01 15:47:55 .net
ここにはオレとオマイしかいませんよ?
199:nobodyさん
04/12/01 17:02:20 .net
>>198
よかった、一人じゃなかったんだ
200:nobodyさん
04/12/01 19:13:52 .net
少なくとも3人いるな(w
201:nobodyさん
04/12/01 22:34:09 .net
俺もいるよ
仲間はずれにしないでくれ
202:nobodyさん
04/12/02 09:00:03 .net
じゃぁ3人ってことね
203:nobodyさん
04/12/02 09:43:08 .net
4人目。
204:nobodyさん
04/12/02 21:26:45 pa/YvkmO.net
点呼とか死ぬほどウゼーしさ、キモイから消えてくんね?
205:nobodyさん
04/12/03 00:38:38 .net
>>204
そんな無意味なこと書く前に>>178の後半に突っ込み入れるなり
フォロー入れるなりしてみろよ。出来なきゃすっこんでろ。
206:nobodyさん
04/12/03 03:27:54 .net
なんでそこで>>178が出てくるんだか
207:nobodyさん
04/12/03 03:43:36 .net
>>206
>>205==>>178
208:nobodyさん
04/12/03 12:41:20 .net
結構入れ食いだと聞いたんですが、
ここでいいんですか?
209:nobodyさん
04/12/03 14:49:15 w3rfsX9n.net
かみ合わない会話が人格攻撃に発展したスレはココですか?
210:nobodyさん
04/12/03 16:43:06 .net
おまいらセッション使う時、ハンドラはファイル使ってますか?
それともDBハンドラ書いてます?
漏れはDBハンドラ使ってるけど。
211:nobodyさん
04/12/04 09:33:25 .net
>>210
バランシングしている複数のwebサーバでセッションを共有したいので
セッション情報はバックエンドのDBに入れてDBハンドラ使いまくりです。
212:nobodyさん
04/12/04 10:21:05 .net
俺はNFSでファイル共有してます。
物理的にバックエンドDBサーバと同じところにあるので
DBで共有しても良いのだが。特に意味は無いがファイルで。
213:178
04/12/04 12:27:40 .net
>>205
なにか間違ってる?
214:nobodyさん
04/12/04 14:45:51 .net
>178 別に間違ってないと思うよ。
>183 とか >186 とかで訳分からん事言ってから話がおかしくなったみたいねえ。
215:nobodyさん
04/12/04 21:59:42 .net
なるほど...
216:210
04/12/08 02:26:30 .net
>>211
漏れと用途が一緒だ。。
>>212
一度NFSでと考えたけど、オーバーヘッドでかくないですか?
DBハンドラでも大してかわらんかも。。。
ベンチはかってないから分からないけど。。
217:みきすけ
05/01/18 09:30:28 fy32GETL.net
どうやってセッション管理すんの!!
218:みきお
05/01/18 10:19:23 fy32GETL.net
みきすけさんへ
マニュアルを見てください。
219:nobodyさん
05/01/18 10:49:26 .net
>>217-218
新手の自演?
220:nobodyさん
05/01/22 12:37:17 .net
コントじゃろ。
221:みきすけ
05/01/23 13:52:25 VKXvKdgM.net
この前の書き込みはすいませんでした。
掲示板とか書き込むの初めてなので失礼なことをしてしました。
今、授業でPostgreSQLとPHPを用いてでセッション管理と
ユーザ認証をするプログラムを書かなければならなくて本から
ユーザ認証のプログラムをパクッたんですが、変更しなければ
ならない箇所があるらしく、さっぱり分かりません。
ログイン後の画面のURLを直接入力してもログインしていない状態
ではエラーがでて、そこにとべないようにようにするには
プログラムに何て書けばよいのでしょうか?
理解度が足りず、意味が通じないような質問になってすみません。
222:nobodyさん
05/01/23 13:58:56 .net
その授業とやらには、先生やら生徒やらはおらんのかのぅ。
223:nobodyさん
05/01/23 14:16:17 .net
>>221
パクった本をまずはよく読むこと。
"課題"なんだから、意味判らんままにコードを流用すんな。
つか、見るのはどんな先生かしらんが、
PHPぐらいなら出版物の量も少ないので
コードのパクりかたが、あからさまだとばれるよ。
224:nobodyさん
05/01/23 16:25:22 .net
俺もPHPじゃないけど課題出た時に
めんどくさくて書籍のサンプル丸写ししたんだが、先生にばれた。
しかし、先生が机に叩き付けた本は出版社も著者も全然違う人だった。
うーん。
225:nobodyさん
05/01/23 17:00:25 .net
コードは知らんが、解説は本も別の本からのパクリが入ってることもある。
かといって別の本や資料を全然参考にもしてない記述は、
アレ?と思うような変な(適正とは言いがたい)内容のものも、ちらほら
226:nobodyさん
05/01/23 18:54:00 .net
>>224
そう言うのは変数名くらい変えとかないと。
あと、インデント幅とかカッコの付け方とか
コメントを適当に付けたりして誤魔化すと完璧。
227:nobodyさん
05/02/04 13:02:28 vme7g+zP.net
まじ役にたたねぇ。
まともな回答一つもないし。
結局そんなもんか。
228:nobodyさん
05/02/04 15:44:32 .net
つーかPHP読めないとその他の言語に移ると絶望的だぞ
これほど簡単な言語はない。arrayの取り扱いを
始めたみたときは正直チンポの先から汁がちょっと出た。ちょっとだけね
229:nobodyさん
05/02/15 18:16:00 .net
携帯でtopページ以外をブックマークや直リン禁止にするという処理も
phpとセッション管理でできるのかな?
230:nobodyさん
05/02/15 18:17:02 .net
でも具体的にそういうスクリプト配ってる所ってないよね。
需要は充分すぎる程あると思うんだけど…
231:nobodyさん
05/02/15 23:46:53 .net
>需要は充分すぎる程あると思うんだけど…
そんなケツの穴の小さいこと考えてんのお前だけだよ(ガハハ
232:nobodyさん
05/02/17 12:47:08 .net
>>229
topページなんか見たくないんです
233:nobodyさん
05/02/17 13:14:28 .net
>>229-230
救えない阿呆
234:nobodyさん
05/02/17 18:17:56 .net
具体的の使い方が違いますよ。
235:nobodyさん
05/02/17 18:39:57 .net
このスレってなんのためにあんの?
236:nobodyさん
05/02/17 18:44:58 .net
>>1のことをプッて笑うスレですよ?
>>3書いたのオレだ。懐かすぃ
237:nobodyさん
05/02/17 20:07:35 .net
>>236
プッ
238:nobodyさん
05/02/20 15:45:27 HD8VrkSM.net
セッションってhiddenによるデータの持ちまわしや
URLにクエリ文字列を埋め込む方法等とどのように使い分ければいい?
239:nobodyさん
05/02/20 18:02:46 6EZLRG8p.net
ページの変遷すべてにformからsubmitで跳びたくなければURLで引き回しなさい
240:nobodyさん
05/02/20 18:26:29 .net
>>238は、
POST・GETの話じゃなくて、セッション使用とページ毎に全データ渡しの話の希ガス
オイラは特に使い分けはしてない。その時の気分次第
241:nobodyさん
05/02/20 18:39:53 6EZLRG8p.net
>>229
セッション切れてたらTOPページにリダイレクトするとかで良いんじゃね?
242:238
05/02/21 02:23:56 .net
つーかあれか。ページIDのようにボタンを押すたびに変わるような
ものはhiddenやクエリーで持ち、ログインIDやパスワードのような
ずっと持ちまわすようなものはセッションというような使い分けかな?
と自己レス。
243:nobodyさん
05/02/22 00:15:50 .net
藻巻いらPHPの知識とかどこで仕入れてくんの?
244:nobodyさん
05/02/22 07:48:53 .net
知識そのものじゃなく仕入れ方まで聞くのかよっ
245:nobodyさん
05/02/22 12:43:47 .net
>>243
魚河岸で。
246:nobodyさん
05/02/22 18:43:15 .net
俺はPerl⇒PHPときたが、Perlの場合は既存のスクリプトが腐るほどあったんでそれを参考にしながら覚えて
PHPはマニュアルが充実してるんで、殆どそれ見ながら覚えたヨ!
247:nobodyさん
05/02/23 08:55:22 mE2XQAit.net
あげー
248:nobodyさん
05/02/24 17:29:34 .net
PHPは簡単だよ。・・・そう、知的障害児が道路を横断するのと同じぐらい
249:nobodyさん
05/02/24 19:49:22 .net
何を伝えたい例えなのか全然わがんね
250:nobodyさん
05/02/24 21:38:01 .net
>>248
貴様の息子/娘が知的障害児で産まれるように強く願ってます
251:nobodyさん
05/02/24 23:25:30 .net
ぶっちゃけPHPなんかリファレンス本を1日読めば次の日から
「PHPできます」って面接で言っちゃって大丈夫。
俺はそうした。余裕でしょこんな雑魚言語。
252:nobodyさん
05/02/24 23:33:01 .net
「できます」なんて指標は、客観的でないのでちっともあてに出来ない。
つうてもJava5年とか書かれてるスキルシートも全然あてにはならんが。
253:nobodyさん
05/02/24 23:33:24 .net
>>251
wラタ
よっぽど酷い会社なんだな
254:nobodyさん
05/02/25 01:10:45 .net
ワロタ
255:251
05/02/25 23:52:19 .net
笑い事じゃなくて、PHPを習得するのに3日以上かかるようじゃ
正直プログラマとしてのセンスを疑うね。
256:nobodyさん
05/02/25 23:54:11 4WDXXuTL.net
習得ってどの程度を言うのでしょうね
257:nobodyさん
05/02/25 23:59:29 .net
けいじばんつくれるぐらい!
258:nobodyさん
05/02/26 10:15:19 .net
>>251
そんなんで企業に入れるのか
やばくねぇかそこw
259:nobodyさん
05/02/26 10:30:38 .net
山田系かも
260:251
05/02/26 22:58:19 .net
お前等ってPHPを習得するのに1ヶ月とかかけるわけ?能無しか?
ちなみに俺は会社に入ったわけじゃなくて個人事業主として
業務委託されてるだけだけどな。
261:nobodyさん
05/02/26 23:20:36 .net
習得ってどの程度を言うのでしょうね
セッションの話まだー?チンチン
262:nobodyさん
05/02/27 01:15:18 .net
セッションへんすうにだいにゅうできるぐらい!
263:nobodyさん
05/02/27 21:56:58 .net
>>261
普通に業務をこなせるくらいだろ?
馬鹿かお前?
264:nobodyさん
05/03/01 22:07:03 .net
PHPのマニュアルに載っていたものです。
page2でgreenとcatと時間が表示されるはずですが、
Welcome to page #2
1969 12 31 23:57:00
page 1
しか表示されません。なんででしょう・・・(´・ω・`)
--------------------------------------------
<?php
session_start();
echo 'Welcome to page #1';
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
// cookieによるセッションが受け入れられていれば動作します
echo '<br /><a href="page2.php">page 2</a>';
// あるいは必要ならセッションIDを付加します
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>
-----------------------------------------------
<?php
session_start();
echo 'Welcome to page #2<br>';
echo $_SESSION['favcolor']; // green
echo $_SESSION['animal']; // cat
echo date('Y m d H:i:s', $_SESSION['time']);
// page1.phpでやったように、ここでSIDを使うことができます。
echo '<br /><a href="page1.php">page 1</a>';
?>
265:nobodyさん@264
05/03/01 22:08:48 B0aTXW7C.net
(追加)
OSとPHPは
Apache/1.3.28 (Win32)
PHP/4.3.10 です。
266:nobodyさん@264
05/03/01 22:20:47 .net
1969 12 31 23:57:00
と出るのは、$_SESSION['time'] がNULLのままだからでしょうね・・・
php.ini では
session.auto_start = Off
session.use_trans_sid = On
なんですが、他に設定するところなどがあるでしょうか?
267:nobodyさん
05/03/02 12:42:44 .net
まずは最初のページへアクセスした際に
php.iniで設定したsession.save_pathに
保存されているかを確認してみましょう。
268:nobodyさん
05/03/02 12:45:20 .net
あと、PHP will not create this directory structure automatically.
と書いてあるので、例えばsession.save_path = "C:\tmp"だったら事前に
tmpフォルダを作っておかないといけない。
269:nobodyさん@264
05/03/02 22:07:46 .net
>>267 >>268
お世話になります。
何故か php.ini で session.save_path = c:\php\sessiondata になってました・・・
(いつの間に???)
いろいろなページを参考にしていじっている内に、こうなってしまった様です。
一応、phpの下にsessiondataを作って動くようになりました。
基本的にはc:\tmpですよね・・・
お手数をお掛けしました。m(_ _)m
270:nobodyさん
05/03/19 13:08:11 oXb2sDzY.net
セッション変数て、PHPデフォのファイルで管理すんのとDB使うのとぶっちゃけどっちが
早いの?軽いの?
271:nobodyさん
05/03/19 13:36:06 .net
どっちが速いかはようわからんっちゅーか、どーでもええし、どーせ大差ないとは思うんだけど
ユーザが増えたときにファイルだとinodeの制限を受けてエラー発生てのもあり得ますから。
だから大規模サイトならDB以外ありえない。
272:nobodyさん
05/03/19 18:33:39 .net
>>270
大規模の場合はバランサーはさんだりでめんどいからDBセッション多用する。
273:nobodyさん
05/03/19 20:43:56 .net
270じゃないけど参考になった
274:nobodyさん
05/04/21 22:24:22 zxQ/ZLfo.net
session_regenerate_id();を使うとc:\tmpにsess_***・・・・・・・が残りまくります。
そこで、不要になったセッションファイルを削除しようと思います。
で、下記のようにしてみましたが、全然消えません・・・
session_start();
$session_id = session_id();//セッションIDのバックアップ
session_regenerate_id();//セッションID変更
unlink ("c:\\tmp\\sess_".$session_id);//以前のセッションIDのファイルを削除
ちなみに、
unlink("c:\\tmp\\sess_セッション番号の現物")を使うと確かに消えてくれます。
なんなんでしょか?これ?
275:nobodyさん
05/04/22 13:42:40 .net
>>274
セッションのタイムアウトくれば勝手に消えていくとは思うんだが。
276:nobodyさん
05/04/22 15:46:10 .net
ガベージコレクション
277:274
05/04/22 20:12:55 .net
>>275
>>276
まぁ、そうなんですけどねぇ・・・
278:nobodyさん
05/04/23 16:09:07 .net
>>274
ファイルがいやならDBセッションでもつかえば?
279:nobodyさん
05/06/23 00:30:15 .net
マジでハマっているんで、誰か教えて。
セッション管理を MySQL + PHP で考えていています。
$_SESSION['hoge'] = $hoge;
とかやった直後は、ハンドラで定義した関数が呼び出されて、
指定したテーブルに $hoge の内容をシリアライズしたような
文字列が格納されているのですが、その後に別の画面へ refresh で
遷移させた後、$_SESSION['hoge'] の値を参照すると何も入っていません。
テーブルを確認すると、直前まで入っていた文字列がブランクになっています。
ちなみに、全ての画面の先頭で session_set_save_handler() と
session_start() を行っています。
これが悪いんでしょうか?
280:nobodyさん
05/06/23 02:17:26 .net
>>274
PHP 5.1.0なら自動で削除されるよ。
281:nobodyさん
05/06/23 09:36:51 .net
>>279
ユーが定義したセッション保存関数を晒さない限りは何ともいえん。
282:279
05/06/23 21:30:07 jMq3kGLZ.net
>>281
こんな感じです。
class SessionHandler {
var $db;
function SessionHandler(&$database) {
$this->db =& $database;
}
function open($save_path, $session_id) {
$connectable = $this->db->connect();
$this->db->close();
return $connectable;
}
function close() {
return true;
}
283:279
05/06/23 21:30:37 jMq3kGLZ.net
function read($session_id) {
if (empty($session_id)) {
return "";
}
if (!$this->db->connect()) {
return "";
}
$sesid = $this->db->addQuote($session_id);
$sql = sprintf("SELECT sesdata FROM sessions WHERE sesid=%s", $sesid);
$result = $this->db->doQuery($sql);
if (is_object($result)) {
while ($row = $db->fetchAssoc($result)) {
$sesdata = $row["sesdata"];
}
$this->db->close();
return $sesdata;
}
else {
return "";
}
}
284:279
05/06/23 21:35:17 jMq3kGLZ.net
function write($session_id, $session_data) {
if (empty($session_id)) {
return false;
}
if (!$this->db->connect()) {
return false;
}
$sesid = $this->db->addQuote($session_id);
$sesip = $this->db->addQuote($_SERVER["REMOTE_ADDR"]);
$sesdata = $this->db->addQuote($session_data);
$sql = sprintf("SELECT * FROM sessions WHERE sesid=%s", $sesid);
$result = $this->db->doQuery($sql);
if ($this->db->getRowsNum($result) == 0) {
$sql = sprintf("INSERT INTO sessions (sesid, sesip, sesdata, sesupdated) VALUES (%s, %s, %s, %u)", $sesid, $sesip, $sesdata, time());
}
else {
$sql = sprintf("UPDATE sessions SET sesdata=%s, sesupdated=%u WHERE sesid=%s", $sesdata, time(), $sesid);
}
$is_write = $this->db->doQuery($sql);
$this->db->close();
return $is_write;
}
285:279
05/06/23 21:36:08 jMq3kGLZ.net
function destroy($session_id) {
if (empty($session_id)) {
return false;
}
if (!$this->db->connect()) {
return false;
}
$sesid = $this->db->addQuote($session_id);
$sql = sprintf("DELETE FROM sessions WHERE sesid=%s", $sesid);
$is_delete = $this->db->doQuery($sql);
$this->db->close();
return $is_delete;
}
function gc($expire_sec) {
$expired = time() - intval($expire_sec);
if (!$this->db->connect()) {
return false;
}
$sql = sprintf("DELETE FROM sessions WHERE sesupdated < %u", $expired);
$is_delete = $this->db->doQuery($sql);
$this->db->close();
return $is_delete;
}
}
よろしくお願いします。
286:nobodyさん
05/06/24 02:44:53 .net
>>279
なぜ保存関数が全部クラスにまとめられてるの?
session_set_save_handlerのサンプルでは単なる関数の集まりになってるけど、その辺大丈夫?
あとrefreshして表示されるアドレスのホスト名はおなじだよね?
287:nobodyさん
05/07/20 06:09:06 .net
URLにPHPSESSIDを出したくないのですが、どうすればよいのでしょうか?
288:nobodyさん
05/07/20 13:11:14 SCPYU6yF.net
>>287
session.use_trans_sid
session.use_cookies
289:nobodyさん
05/07/21 12:17:04 wgpYmPTZ.net
>>288
session.use_cookies = 1
session.use_trans_sid = 1
クッキーが使えるときはクッキーを使って渡し、
クッキーが使えないときはURLにパラメータを付けて渡す・・・ってことですよね。
ブラウザ側のクッキーは使える設定です。
が、全てURLにパラメータが付いてきます。
ちなみに、
session.use_trans_sid = 0
にするとページが変わる毎に新規にセッションIDが作られ、セッションが保持されていません。
なんなんでしょか?これ。
290:nobodyさん
05/07/21 14:59:56 wgpYmPTZ.net
>>289
自己解決しました・・・
php.iniの中のsession.cookie_path =が
session.cookie_path = /tmp
になっていました・・・(何でだろ・・・???著しく不明。
session.cookie_path = /
で問題無く動きました。
291:nobodyさん
05/07/23 03:28:54 .net
!?
292:nobodyさん
05/07/25 06:19:23 .net
>>290
!?
((((;゚Д゚))))ブルブル
。 。
/ / ポーン!
( Д )
環境はwindowsですか?
Linuxならある意味凄いと思う。
293:nobodyさん
05/08/16 14:15:34 OHYrGECG.net
オマイラ教えてください。m(_ _;)m
実はセッションファイルの置き場をtmpfsで作ろうと思います。
しかしながら、単純にtmpfsで/tmpを作って重ねてしまうと、既に入っている各種のファイルを使えなくなるため鯖の動作がおかしくなります。
んで、Apache+phpのセッションファイル専用に/tmp2を作ろうと思います。
が、php.iniのsession.save_pathを/tmp2にして再起動し、セッションが働くように動作させても、/tmpの方にセッションファイルが書き込まれて行きます。
/tmp2のパーミッションを777にしても同じです。
php.iniのsession.save_pathの設定が無視されているようです。
これはどういうことなのでしょうか?
教えて下さい。
294:nobodyさん
05/08/16 14:43:15 .net
>>293
わかった
先頭に;がついたままでコメントになってる
295:nobodyさん
05/08/16 15:08:20 .net
>>294
ち・ちがう・・・orz
そこまでアホやないっつぅの (`・ω・´)
296:nobodyさん
05/08/16 16:05:05 .net
>>295
じゃあスクリプトで
ini_set('session.save_path', '/tmp');
とかやってる
わけないよね
ていうか
ini_set('session.save_path', '/tmp2');
としたらどうなる。
297:nobodyさん
05/08/16 17:06:52 .net
>>296
どうもです。m(__;)m
session_start();の前でやるってやつでしょ。
その手も考えたんですけど、それ以前に「なんでこ~なるの???」状態です。
php.iniの記載が無視されているんですよ。
別のphp.iniを読みに行っているのか?と。(そんなことは無いと思うが・・・)
最後の手段はini_set('session.save_path','/tmp2');ですね。
298:nobodyさん
05/08/16 17:19:48 .net
>>297
そのphp.iniが読み込まれてることは
確認した?
299:nobodyさん
05/08/16 18:10:31 .net
>>298
他に無いですから・・・
(ZENDのツールがクサイのですが・・・)
尚、ini_set('session.save_path','/tmp2');では動くことを確認しました。
しかし、このini_set()で作ったセッションファイルも、
しかるべき確率で掃除してくれるんでしょうかね?
まぁ、暫く見ていれば分かる話なので観察しますよ・・・orz
お手数をお掛けしました。ありがとうございました。 (´・ω・`)ノ~~~
300:nobodyさん@299
05/08/16 19:06:15 .net
あっ!ちゃんと掃除してくれますよ!
ini_set('session.save_path','/hoge');で作られたセッションファイルも消してくれるんですね。
1440秒経ったら100分の1の確率で掃除してくれます。
これで行きますよ。
(´^ω^`)ノ~~~~
301:nobodyさん
05/08/27 22:03:36 .net
解決したの?
302:nobodyさん
05/09/10 06:23:44 .net
298の段階で止まってる
303:nobodyさん
05/11/01 21:44:14 F+HZoSiJ.net
サーバサイド側のセッション管理をした場合、例えばフォームを
行き来する場合はどうなるのでしょうか。
hiddenでセッションIDを持ち歩く必要性があるという解釈でよいの
でしょうか。
304:nobodyさん
05/11/03 02:42:33 8uhVEs5z.net
*** すべてのPHPユーザーに告ぐ ***
URLリンク(www.hardened-php.net)
URLリンク(www.hardened-php.net)
URLリンク(blog.ohgaki.net)
PHPに深刻な脆弱性がある事が発表されました。今まで見つかったPHPの脆弱性の中でも「最悪」の脆弱性です。全てのPHPユーザは今すぐ対処を行う必要があります。
305:nobodyさん
06/01/24 11:00:18 1bRZq7Cs.net
AGE
306:nobodyさん
06/02/08 19:28:12 .net
セッションを使うと必ずサーバー上の/tmpにファイルが作られブラウザを閉じるとファイルが残ってしまうのだけど
これを残さないようにすることってできるのかな?
307:nobodyさん
06/02/08 20:13:42 .net
>>306
セッションファイルはちゃんとガーベージコレクトされる筈だが。
ガーベージコレクトのタイミングやゴミとみなされるまでの時間を見直したら?
308:nobodyさん
06/02/12 22:08:23 8opibPhp.net
>>306
セッションハンドラをいじればDBにだって保存できるぞ。
309:nobodyさん
06/02/13 07:03:19 .net
>>303
>hiddenでセッションIDを持ち歩く
すごく無意味&恐ろしいこと言ってるな・・・
310:nobodyさん
06/02/13 20:01:20 .net
>>309
何が無意味でどう恐ろしいの?
俺も似たようなことやってるので教えて欲しい。
311:nobodyさん
06/02/13 22:54:37 .net
>>310
まんま続けてろ。
探してそのうち遊びに行ってやるw
312:nobodyさん
06/02/15 12:02:34 .net
>>こういう人って知ってて教えてやらないの?
それとも知ったかぶりしてるの?
313:nobodyさん
06/02/15 12:05:15 .net
ごめ。>>311ね。
314:nobodyさん
06/02/15 13:19:08 .net
session.use_trans_sidがOnの状態にしてるのと変わんないよ>hidden
そりゃcookieでSIDを持たせた方が、安全性は高まるけど
そうではなくGETとか選択してるのは、理由があってやってるんだろ?
315:nobodyさん
06/02/15 14:53:21 .net
cookie使えない携帯用とか
316:nobodyさん
06/02/27 21:51:57 UfqSpQ0b.net
セッション管理ってよくわからないんですけど
要するにパスワードかなんかでふるいにかけても
URLで「login=ok」みたいに渡しちゃってたら誰でも入れてこれは困ったな
見たいになるのを防ぐものなんですか?
317:nobodyさん
06/02/28 01:15:27 FEcOQ9wP.net
hiddenも普通に使う。要件による。当たり前。
318:nobodyさん
06/02/28 08:22:56 .net
>>316
>「login=ok」みたいに渡しちゃって
ということを普通は最初からしないので、何とも。
セッションはその名のとおり、C/S間のやり取りが
継続しているということを実現するための仕組み。
かといって特に新しいことも、物凄く高度なことでもなく
かつてPHPの標準のセッション機能が無い頃は、各々が
ごく当たり前に独自にセッション機能を作ってやってたもんだよ。
(PHPlibとかあったけど)
だから今でも、何も難しく考えることはない。ただあるものを使えばいい。
319:nobodyさん
06/03/12 22:04:26 .net
クッキーなんで偽造出来るんだけどね。
セッション乗っ取れば認証回避出来るよ。
320:nobodyさん
06/03/14 02:05:53 .net
セッション生成場所にF5アタックされたら
めちゃくちゃセッション作ってくれるとおもうんだけど
貴殿らどういう対策してる?
321:nobodyさん
06/03/14 03:11:17 .net
>>320
セッション生成場所に限らずF5アタックは嫌なので
httpdより前にブロックしてる。
322:nobodyさん
06/03/14 03:56:20 .net
>>320
F5アタックなら全部同じセッションになるんでないの?
323:nobodyさん
06/03/14 21:59:30 .net
>>321
ううむ、やっぱそのレベルで防がないとだめかー
スクリプトレベルで防ぐのはあんまり賢くないかな
たとえば何件いったら新規セッションを一時発行しなくするとかね
>>322
クッキー拒否だと新規セッションにならない?
324:nobodyさん
06/03/15 02:07:44 .net
クッキー切ってる香具師にはセッションを発行しなきゃいい
325:nobodyさん
06/03/15 12:33:20 aJbbMre9.net
>>321
httpdより前でブロックって
何を使ったらできるの?
326:nobodyさん
06/03/15 12:41:21 .net
>>325
ルータじゃないの
327:nobodyさん
06/03/16 00:21:52 .net
企業ではセキュリティ上クッキー食べなくさせてる所も多いので、そう言う客も失う覚悟だな。
httpd自身(libwrappr)とか鯖のIP処理レベルとか、本命のファイヤーウォールとか。
ちなみにルータで処理させるとルータの負荷が騰がって、他の通信にも影響が出るから辞めるべき。
mod_php弄って特定IPからのアクセスにRSTパケット返しちゃうってのも、F5連打廚にはいいカモな。
328:321
06/03/16 01:53:28 .net
>>325
自分が使ってるのはiptablesだから、そこの中で。
つかhttpだけじゃなくて、sshやftpへのブルートフォースアタックがかなり多いので、
それらもまとめて弾いてる。Apacheでやるなら、mod_dosevasiveみたいなまんまの奴や
帯域を絞るモジュールなど色々あるよ。
phpで対処するってのは、自分で手を出せるところの範囲が狭くて
どうしようもない時の残された方法かと。F5アタックならphpでなくても
負荷のかかるコンテンツならどこを狙っても良いわけだし。
レンタルサーバなら、収容している他のユーザが対処してないなら意味無いしね。
329:nobodyさん
06/03/19 01:37:13 .net
セッションをDBに保管する方法は幾つかあるかと思いますが
皆さんのところは何を使ってますか?
とりあえずうちは「session_pgsql」を使ってますが他になにかいいのないですかねぇ。
330:nobodyさん
06/03/19 17:39:22 .net
自作ハンドラなのらー
331:nobodyさん
06/03/19 19:47:54 .net
全くのスクラッチと言うかオリジナル?
何からパクりましたか?
332:nobodyさん
06/03/20 20:33:13 .net
Cookie必須にできないのでhiddenで引き回してるんだけど、
IPとブラウザのUA(吐かない場合あり)チェックだけだと
例えば社内LANとかでのハイジャックの危険性は残ったままだよね?
何かいい方法ないですか?
333:nobodyさん
06/03/22 05:13:46 .net
>>332
社内LANってやつからWAN(サーバ)へのアクセスがプロキシ経由やNAT経由ならね。
334:nobodyさん
06/03/29 12:18:47 .net
>>332
普通にIPが変わることもあるよ
335:nobodyさん
06/03/32 12:40:07 /aohY8EP.net
<?
class session{
var $idname;
var $id;
function session($idname=""){
if(!isset($idname) || $idname=="") $idname="sid";
$this->idname=$idname;
$this->id=$_GET[$this->idname];
if($this->id==""){
$this->id=$_POST[$this->idname];
}
}
function init($id=""){
if(isset($id)&& ($id!="")){
session_id($id);
session_start();
$this->id=$id;
}else{
if(isset($this->id) && ($this->id!="")){
session_id($this->id);
session_start();
}else{
session_start();
$this->id=session_id();
}
}
}
336:nobodyさん
06/03/32 12:41:53 /aohY8EP.net
function getId(){
return $this->id;
}
function VarExist($varname){
if(isset($_SESSION[$varname])) return TRUE;
return FALSE;
}
function get($varname){
if($this->VarExist($varname)) return $_SESSION[$varname];
return FALSE;
}
function set($varname,$value){
$_SESSION[$varname]=$value;
}
function remove($varname){
unset($_SESSION[$varname]);
unset($GLOBALS[$varname]);
return TRUE;
}
function clear(){
while (list($key, $val) = each($_SESSION)){
unset($_SESSION[$key]);
unset($GLOBALS[$key]);
}
}
}
?>
337:nobodyさん
06/04/02 02:53:22 .net
URLリンク(labs.cybozu.co.jp)
338:nobodyさん
06/04/13 10:40:48 YOyrE4Lu.net
携帯のランキングでセッションハイジャックしたいんですが、携帯のIPでの接続のみ
セッション発行してるみたいで、PCではセッションを採取できません。
特定のセッションが欲しいのではなく発行されているセッションであればOKです。
セッションの有効期限は3分?ランキングアウトPhpでセッション破棄しています。
何か有効な方法があれば教えてください。
339:nobodyさん
06/04/13 11:45:21 .net
>>338
シネバイイトオモウヨ
340:nobodyさん
06/04/13 12:41:30 .net
>>338
ツーホーしときますね
341:nobodyさん
06/04/13 15:44:28 .net
DoCoMoの社員になってDoCoMo鯖からソケット使ってセッション取るとか(w
まぁ昔のRanklink改造した奴なんか簡単にセッションハイジャック出来たが、
セッション管理をファイルでやっててそのファイルがあるディレクトリに穴でもない限りは無理やね。
342:nobodyさん
06/04/29 20:43:42 .net
いまさらだけど、PHPとセッションは関係ないじゃん。
関数の話がしたいならPHPスレじゃね?
343:nobodyさん
06/05/11 17:30:38 .net
君は何を言ってるんだね。
344:nobodyさん
06/05/11 20:40:30 VDpWubyB.net
うわ。。
10日以上前の書き込みにレスしちまった。。
ヤケクソage
345:nobodyさん
06/05/12 18:45:44 .net
君は何を言ってるんだね。
346:nobodyさん
06/05/12 23:27:13 .net
10日くらい間空けろよ。
なんか期待しちまうじゃないかorz
347:nobodyさん
06/05/15 01:15:16 .net
でも力任せでセッションID生成して送りつければいつかは突破できそうだけどな。
そのまえに鯖が異常に重くなってあぼんするだろうけど(w
348:nobodyさん
06/05/17 22:20:27 .net
次のスレタイはこうだね。
PHPじゃないとセッションつかえないと思ってる香具師の数→
349:nobodyさん
06/05/19 19:09:45 .net
ちょっと質問ですが、WebアプリでセッションにクライアントIPアドレス
を入れるという実装って普通しますか?
IPアドレスなんて変わることが多いからそんなことしないかと思っていたの
ですが
350:nobodyさん
06/05/19 19:18:14 .net
結論としてはやめておいた方が良い。
再利用しているところが多いし、同じIPアドレスを使ってるPCだって結構ある。
351:nobodyさん
06/05/19 19:22:28 .net
再利用というのは、DHCPから配られるIPアドレスという意味でいいですか?
あと同じIPアドレスを使っているというのは、NATのことでしょうか?
それくらいしか思いつかなかった。
352:nobodyさん
06/05/19 19:22:52 oMRPSSzC.net
データが通信途中全て第三者に取得されていると言う前提で、
SSLを使わないでデータを安全にやりとりする方法ってありますか?
JavaScriptとPHPでRSA暗号使ってやりとりしようと思ったのですが、
もっとスマートで対応するブラウザが多い方法ってありますか?
どなたかご存じの方教えていただけると嬉しいです。
353:nobodyさん
06/05/19 20:14:41 .net
>>351
NATもproxyも。
354:nobodyさん
06/05/19 21:39:58 .net
大企業やCATVとかでファイヤーウォール噛ませててインターネットからは一つのIPに見えてるってネットワークは有る。
RSAで簡単にやるのがSSLなんだけどね。わざわざSSL使わずにどうにかするほうが面倒で難しい。
355:352
06/05/19 21:59:02 .net
SSLに対応しないブラウザの為に、、と考えていたんですが、
きょうびJavaScriptに対応しないブラウザよりSSLに対応しないブラウザの歩が珍しいかな。。orz
356:nobodyさん
06/05/19 22:45:38 .net
>>350
俺は「一応の保険」みたいな感じでやってるなー
もちろん単なる簡単な保険程度の扱いだけど。
357:nobodyさん
06/05/19 22:52:14 .net
>>350
作る「もの」によるかな?
シビアなチェックが要求されるものならIPチェックには頼らないが、セッションハイジャックされたところで
そんなに大したもんでもない程度のものなら、IPチェックすらしてないw
IPチェック程度を実装する事もある
みたいな。
358:nobodyさん
06/05/19 23:02:07 .net
>>349
>>357の書く通りそれに頼ってしまうのは間違いだけど、セッションハイジャックを防ぐ方法としては比較的一般的に使われてる手法。
URLリンク(www.google.com)
359:nobodyさん
06/05/20 10:09:53 .net
セッションハイジャックを防ぐ手法一つとしての存在するのは理解できるのですが、
実際にどんな場合に利用してます?
個人的には無意味かなぁと思っていたのですが
保険的に利用する場合ってIPチェックして違った場合、ログを残すとかそんな感じですか?
360:nobodyさん
06/05/20 12:50:03 .net
>>359
>>358
361:nobodyさん
06/05/21 17:21:39 .net
セッションを使ったログイン・システムを作ったのですが、
ログイン後、操作をしない(通信をしない)時間が数分続くと、
勝手にログアウトしてしまいます。
ブラウザを閉じたわけでもないですし、session.gc_maxlifetimeは1440あります。
明示的にログアウト処理をしない限りログイン状態が続くようにしたいのですが、
どこの設定をいじれば良いのでしょうか・・・。
362:nobodyさん
06/05/21 19:04:53 .net
>>358
そこ読んだけど
IPチェックはあまり意味ないって言ってる気がするが?
363:nobodyさん
06/05/21 22:09:56 .net
>>362
そう。あんまり意味無い。
でも、全く意味が無いってわけでも無い。
つまり、それ程シビアなチェックを必要とされないものなら、この程度でも良いかもね程度に考えておけばと。
とにかくだな。
あくまで1つの手段としてこんなのもあるよって話しなので、気に入らないのなら別の方法を実装すれば良いだけの話。
頭で色々考えるのも良いが、まずは先に物を作って実際に動かした方が余程勉強になるかと。
364:nobodyさん
06/05/21 22:13:15 .net
>>363
↓書き方悪かったな。
まずは先に物を作って実際に動かした方が余程勉強になるかと。
↑っていうのは、自分でセッションを使う簡易的なサイトでも作ってみて、それを自分でセッションハイジャック出来るかどうか試してみたら良いよって感じかな。
ハイジャックできてしまったら、それを防ぐにはどうすれば良いかを考えて改良し、また自分でハイジャックを試す。
そんな感じで完成度を上げていくと良いかなって思う。
365:nobodyさん
06/05/22 10:41:52 .net
IPチェックだけは意味が無いね。
他との併用でしょ。セコムのシール貼ってるだけに近い。実際の防犯にはちゃんと対策が必要。
元々HTTPはステートレス。
セッションを使って無理矢理ステートフルに見せかけてるだけ。
NATとかkeepalive切ってる場合も有るから、鯖でがんばっても無理が有ることが多い。
366:361
06/05/22 19:04:58 .net
放置されてるところを見ると、くだ質に行くべきでしたね。。。 行ってきます。
367:nobodyさん
06/05/23 11:47:58 8StU5eTg.net
質問させてください
セッションIDでログイン状態を判断するっていうのは
最初ログインしたときに
サーバ側のDBなどでセッションIDとログインしたユーザを
紐づけて管理するってことですよね?
それとは別に、ログイン時に
ログインIDとパスワードをクッキーに書き込んで
認証が必要なページでは毎回クッキーで判定しようと思うのですが
どんなリスクがあるのでしょう?
もちろんパスワードはMD5などの不可逆な変換を行い
クッキーもSSLのページのみで受け渡しします。
368:nobodyさん
06/05/23 14:17:16 .net
クッキーがPCに残るから、それを第三者に取られたとき危うい。
セッションIDなら一度ログアウトしてしまえば大丈夫だけど、
それだとログアウトしてもクッキーさえ持っていれば再度ログインできる。
369:367
06/05/23 15:03:01 .net
>>368
すみません、クッキーと書きましたが
ブラウザを閉じたら消えるやつで
いわゆるセッションと同じようなもののことでした。
でもブラウザの実装によっては
一時的でもクライアントに保存されるため
リスクが高いということでしょうか。
370:nobodyさん
06/05/23 20:46:03 .net
>>369
強いて言うなら、その方法だと、XSSでクッキーを盗まれたときに、
パスワードを変更しない限り、その情報が使えてしまうけど、
XSS心配したらセッションも使えないし、
リスクという点では大差ないと思う。
セッションには、
・PHPに初めから実装されていて、手軽に使える
・ブラウザを閉じるまでは、以前の情報を継続して使える
という利点があるけど、単にログイン状態を保存しておくだけだったら、>>367の方法でも良いんじゃないかな。
371:nobodyさん
06/05/23 23:07:03 .net
>>369
永続的なパスワードは一時的であれクッキーに保存するべきではない。
XSSでコッソリ取られた日には目も当てられない。
372:nobodyさん
06/05/23 23:17:59 .net
>>371
パスワードそのままじゃない
って言ってるよ
373:nobodyさん
06/05/24 15:21:01 8TTcDRX+.net
session.gc_maxlifetime を10にしているのに
10秒たってもセッションがタイムアウトしません。
なぜなんでしょうか?
環境はIIS5.0 / php5.0.3 です。
php.iniの値はこのようになってます。
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 10 10
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path no value no value
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
374:368
06/05/24 15:58:59 .net
>>372
よくよめ。
>>371
確かに。XSSの事忘れてた。。
つーか、わざわざパス記録すんなよ。メリット無いだろ。
セッションならXSSで取られてもIPで再度チェックすれば大体防げる。
375:nobodyさん
06/05/24 17:26:05 .net
IPでチェックって言ってる人は
IPが変わる環境のクライアントは切り捨ててるの?
376:368
06/05/24 17:35:05 .net
可変範囲考えて実装すれば何も問題ない。
ホスト名が取得出来るんだったら、末尾から数えて二つめのドットまでマッチングとかな。
自分はもうちょっと複雑に可変範囲決定してるが、方法はいくらでもあると思われ。
377:nobodyさん
06/05/24 18:12:48 .net
>>375
携帯サイトのことを言っているのならIPチェック自体がナンセンス
通常のネットワーク環境を前提にしているとしたらIPが変わった時点でセッションが切れて当然
378:nobodyさん
06/05/24 18:15:10 .net
自分はIP変わった時点ではログアウトさせて無いなぁ。。
苦情来ない?実際自分も不便だと思うからneverにしてる。
クリティカルなやりとりに入る場合は再入力させてるけど。
379:nobodyさん
06/05/24 18:15:50 .net
>>376
.co.jp ??
>>377
そうなんだ
知らなかった
380:386
06/05/24 18:21:45 .net
>>379
いや、so-net.netとか。.ne.jpとかは末尾ドット二つじゃ足りなくて三つ遡ってマッチしなきゃならんが。
ヤフやらはてなやらアマゾンはそんな実装だな。>>378
関係ないけど、ヤフの会員登録(HTTP)は生でパス流してる。
381:nobodyさん
06/05/24 18:22:17 .net
>>378
それ「セッション」じゃないし…
382:386
06/05/24 18:23:41 .net
更に関係ないけど、ヤフのログインてHTTPが標準なのは勘弁して欲しい。
チャレンジレスポンスだけど、途中に割り込まれたらっつーのもあるし、今時HTTPって。。
383:nobodyさん
06/05/24 18:27:30 .net
>>381
所謂セッション管理についてのスレだから一行動としてのセッションで捉えなくて良いと思ふ、
つか、今時そんな短時間でログアウトさせてる方が珍しい、金融機関除いて
384:nobodyさん
06/05/24 18:32:26 .net
>>381
なにがセッションじゃないんだ?
385:nobodyさん
06/05/24 18:43:29 .net
確かにログアウトまでの時間については悩ましいところ。
セキュリティ的には短い方が望ましいが、長い方が明らかに便利。
あ、良いこと考えた。
386:386
06/05/24 18:46:32 .net
httpsのリンクをお気に入りに登録させ、毎回ログインさせれば良いじゃん、とか考えたけど、
直接PCを操作される場合のリスクを考えてナカタ。何か良い方法無いですか?
387:nobodyさん
06/05/24 19:33:32 .net
>>386
質問したいなら
要点をまとめてからにしてくれ
388:nobodyさん
06/05/24 23:16:27 vQsxJJUN.net
$_SESSIONに値を入れたときに
ちゃんとセションファイルに書きこまれないときがあります。
具体的には
画面AでA.php?hoge=aで
$_GET['hoge']から'a'を取得し
$_SESSION['hoge']="a"といれ、
画面Bに行く。
このとき$_SESSION['hoge']はaとなっている。
ブラウザの戻るでAにもどり
URLにA.php?hoge=bと入力しエンターキー。
($_SESSION['hoge']="b"となっているはず。)
画面Bに行く。
するとこのとき、
$_SESSION['a']の中には
aが入っていて、こちらの期待する値(b)になりません。
画面Aに戻り
URLにA?hoge=bと入力しエンターキーを押して
F5を押すと
$_SESSION['a']には期待値(b)が入っています。
どうしてこのようになるのか分かりません。
どなたか教えていただけないでしょうか。
また期待値を得るためにはどうしたら良いでしょうか?