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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/09/24 19:31ID:SnRvXmpI
ブラウザを閉じたらセッションの効果がなくなるのって、
ブラウザを閉じることでクッキーを消しているからなのですね。。
知らなかったよーーーーうわーーーん
0266nobodyさん@26405/03/01 22:20:47ID:???
1969 12 31 23:57:00
と出るのは、$_SESSION['time'] がNULLのままだからでしょうね・・・

php.ini では
session.auto_start = Off
session.use_trans_sid = On
なんですが、他に設定するところなどがあるでしょうか?
0267nobodyさん05/03/02 12:42:44ID:???
まずは最初のページへアクセスした際に
php.iniで設定したsession.save_pathに
保存されているかを確認してみましょう。
0268nobodyさん05/03/02 12:45:20ID:???
あと、PHP will not create this directory structure automatically.
と書いてあるので、例えばsession.save_path = "C:\tmp"だったら事前に
tmpフォルダを作っておかないといけない。
0269nobodyさん@26405/03/02 22:07:46ID:???
>>267 >>268
お世話になります。

何故か php.ini で session.save_path = c:\php\sessiondata になってました・・・
(いつの間に???)

いろいろなページを参考にしていじっている内に、こうなってしまった様です。
一応、phpの下にsessiondataを作って動くようになりました。
基本的にはc:\tmpですよね・・・

お手数をお掛けしました。m(_ _)m
0270nobodyさん05/03/19 13:08:11ID:oXb2sDzY
セッション変数て、PHPデフォのファイルで管理すんのとDB使うのとぶっちゃけどっちが
早いの?軽いの?
0271nobodyさん05/03/19 13:36:06ID:???
どっちが速いかはようわからんっちゅーか、どーでもええし、どーせ大差ないとは思うんだけど
ユーザが増えたときにファイルだとinodeの制限を受けてエラー発生てのもあり得ますから。
だから大規模サイトならDB以外ありえない。
0272nobodyさん05/03/19 18:33:39ID:???
>>270
大規模の場合はバランサーはさんだりでめんどいからDBセッション多用する。
0273nobodyさん05/03/19 20:43:56ID:???
270じゃないけど参考になった
0274nobodyさん2005/04/21(木) 22:24:22ID:zxQ/ZLfo
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_セッション番号の現物")を使うと確かに消えてくれます。

なんなんでしょか?これ?

0275nobodyさん2005/04/22(金) 13:42:40ID:???
>>274
セッションのタイムアウトくれば勝手に消えていくとは思うんだが。
0276nobodyさん2005/04/22(金) 15:46:10ID:???
ガベージコレクション
02772742005/04/22(金) 20:12:55ID:???
>>275
>>276
まぁ、そうなんですけどねぇ・・・

0278nobodyさん2005/04/23(土) 16:09:07ID:???
>>274
ファイルがいやならDBセッションでもつかえば?
0279nobodyさん2005/06/23(木) 00:30:15ID:???
マジでハマっているんで、誰か教えて。
セッション管理を MySQL + PHP で考えていています。

$_SESSION['hoge'] = $hoge;

とかやった直後は、ハンドラで定義した関数が呼び出されて、
指定したテーブルに $hoge の内容をシリアライズしたような
文字列が格納されているのですが、その後に別の画面へ refresh で
遷移させた後、$_SESSION['hoge'] の値を参照すると何も入っていません。

テーブルを確認すると、直前まで入っていた文字列がブランクになっています。

ちなみに、全ての画面の先頭で session_set_save_handler() と
session_start() を行っています。
これが悪いんでしょうか?
0280nobodyさん2005/06/23(木) 02:17:26ID:???
>>274
PHP 5.1.0なら自動で削除されるよ。
0281nobodyさん2005/06/23(木) 09:36:51ID:???
>>279
ユーが定義したセッション保存関数を晒さない限りは何ともいえん。
02822792005/06/23(木) 21:30:07ID:jMq3kGLZ
>>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;
 }
02832792005/06/23(木) 21:30:37ID:jMq3kGLZ
 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 "";
  }
 }
02842792005/06/23(木) 21:35:17ID:jMq3kGLZ
 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;
 }
02852792005/06/23(木) 21:36:08ID:jMq3kGLZ
 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;
 }
}

よろしくお願いします。
0286nobodyさん2005/06/24(金) 02:44:53ID:???
>>279
なぜ保存関数が全部クラスにまとめられてるの?
session_set_save_handlerのサンプルでは単なる関数の集まりになってるけど、その辺大丈夫?
あとrefreshして表示されるアドレスのホスト名はおなじだよね?
0287nobodyさん2005/07/20(水) 06:09:06ID:???
URLにPHPSESSIDを出したくないのですが、どうすればよいのでしょうか?
0288nobodyさん2005/07/20(水) 13:11:14ID:SCPYU6yF
>>287
session.use_trans_sid
session.use_cookies
0289nobodyさん2005/07/21(木) 12:17:04ID:wgpYmPTZ
>>288
session.use_cookies = 1
session.use_trans_sid = 1

クッキーが使えるときはクッキーを使って渡し、
クッキーが使えないときはURLにパラメータを付けて渡す・・・ってことですよね。

ブラウザ側のクッキーは使える設定です。
が、全てURLにパラメータが付いてきます。
ちなみに、
session.use_trans_sid = 0
にするとページが変わる毎に新規にセッションIDが作られ、セッションが保持されていません。

なんなんでしょか?これ。

0290nobodyさん2005/07/21(木) 14:59:56ID:wgpYmPTZ
>>289
自己解決しました・・・

php.iniの中のsession.cookie_path =が
session.cookie_path = /tmp
になっていました・・・(何でだろ・・・???著しく不明。

session.cookie_path = /
で問題無く動きました。
0291nobodyさん2005/07/23(土) 03:28:54ID:???
!?
0292nobodyさん2005/07/25(月) 06:19:23ID:???
>>290
!?

((((;゚Д゚))))ブルブル

  。 。
  / / ポーン!
( Д )


環境はwindowsですか?
Linuxならある意味凄いと思う。
0293nobodyさん2005/08/16(火) 14:15:34ID:OHYrGECG
オマイラ教えてください。m(_ _;)m

実はセッションファイルの置き場をtmpfsで作ろうと思います。
しかしながら、単純にtmpfsで/tmpを作って重ねてしまうと、既に入っている各種のファイルを使えなくなるため鯖の動作がおかしくなります。
んで、Apache+phpのセッションファイル専用に/tmp2を作ろうと思います。
が、php.iniのsession.save_pathを/tmp2にして再起動し、セッションが働くように動作させても、/tmpの方にセッションファイルが書き込まれて行きます。
/tmp2のパーミッションを777にしても同じです。
php.iniのsession.save_pathの設定が無視されているようです。

これはどういうことなのでしょうか?
教えて下さい。

0294nobodyさん2005/08/16(火) 14:43:15ID:???
>>293
わかった
先頭に;がついたままでコメントになってる
0295nobodyさん2005/08/16(火) 15:08:20ID:???
>>294
ち・ちがう・・・orz







そこまでアホやないっつぅの (`・ω・´)
0296nobodyさん2005/08/16(火) 16:05:05ID:???
>>295
じゃあスクリプトで
ini_set('session.save_path', '/tmp');
とかやってる
わけないよね
ていうか
ini_set('session.save_path', '/tmp2');
としたらどうなる。
0297nobodyさん2005/08/16(火) 17:06:52ID:???
>>296
どうもです。m(__;)m

session_start();の前でやるってやつでしょ。
その手も考えたんですけど、それ以前に「なんでこ〜なるの???」状態です。
php.iniの記載が無視されているんですよ。
別のphp.iniを読みに行っているのか?と。(そんなことは無いと思うが・・・)


最後の手段はini_set('session.save_path','/tmp2');ですね。
0298nobodyさん2005/08/16(火) 17:19:48ID:???
>>297
そのphp.iniが読み込まれてることは
確認した?
0299nobodyさん2005/08/16(火) 18:10:31ID:???
>>298
他に無いですから・・・
(ZENDのツールがクサイのですが・・・)

尚、ini_set('session.save_path','/tmp2');では動くことを確認しました。

しかし、このini_set()で作ったセッションファイルも、
しかるべき確率で掃除してくれるんでしょうかね?
まぁ、暫く見ていれば分かる話なので観察しますよ・・・orz

お手数をお掛けしました。ありがとうございました。 (´・ω・`)ノ~~~

0300nobodyさん@2992005/08/16(火) 19:06:15ID:???
あっ!ちゃんと掃除してくれますよ!

ini_set('session.save_path','/hoge');で作られたセッションファイルも消してくれるんですね。
1440秒経ったら100分の1の確率で掃除してくれます。

これで行きますよ。

(´^ω^`)ノ~~~~
0301nobodyさん2005/08/27(土) 22:03:36ID:???
解決したの?
0302nobodyさん2005/09/10(土) 06:23:44ID:???
298の段階で止まってる
0303nobodyさん2005/11/01(火) 21:44:14ID:F+HZoSiJ
サーバサイド側のセッション管理をした場合、例えばフォームを
行き来する場合はどうなるのでしょうか。

hiddenでセッションIDを持ち歩く必要性があるという解釈でよいの
でしょうか。
0304nobodyさん2005/11/03(木) 02:42:33ID:8uhVEs5z
*** すべてのPHPユーザーに告ぐ ***

http://www.hardened-php.net/advisory_202005.79.html
http://www.hardened-php.net/globals-problem
http://blog.ohgaki.net/index.php/yohgaki/2005/11/02/phpa_rc_fei_a_oa_oa_fa_sa_le_acsa_oe_afp

PHPに深刻な脆弱性がある事が発表されました。今まで見つかったPHPの脆弱性の中でも「最悪」の脆弱性です。全てのPHPユーザは今すぐ対処を行う必要があります。
0305nobodyさん2006/01/24(火) 11:00:18ID:1bRZq7Cs
AGE
0306nobodyさん2006/02/08(水) 19:28:12ID:???
セッションを使うと必ずサーバー上の/tmpにファイルが作られブラウザを閉じるとファイルが残ってしまうのだけど
これを残さないようにすることってできるのかな?
0307nobodyさん2006/02/08(水) 20:13:42ID:???
>>306
セッションファイルはちゃんとガーベージコレクトされる筈だが。
ガーベージコレクトのタイミングやゴミとみなされるまでの時間を見直したら?
0308nobodyさん2006/02/12(日) 22:08:23ID:8opibPhp
>>306
セッションハンドラをいじればDBにだって保存できるぞ。
0309nobodyさん2006/02/13(月) 07:03:19ID:???
>>303
>hiddenでセッションIDを持ち歩く

すごく無意味&恐ろしいこと言ってるな・・・
0310nobodyさん2006/02/13(月) 20:01:20ID:???
>>309
何が無意味でどう恐ろしいの?
俺も似たようなことやってるので教えて欲しい。
0311nobodyさん2006/02/13(月) 22:54:37ID:???
>>310
まんま続けてろ。
探してそのうち遊びに行ってやるw
0312nobodyさん2006/02/15(水) 12:02:34ID:???
>>こういう人って知ってて教えてやらないの?
それとも知ったかぶりしてるの?
0313nobodyさん2006/02/15(水) 12:05:15ID:???
ごめ。>>311ね。
0314nobodyさん2006/02/15(水) 13:19:08ID:???
session.use_trans_sidがOnの状態にしてるのと変わんないよ>hidden
そりゃcookieでSIDを持たせた方が、安全性は高まるけど
そうではなくGETとか選択してるのは、理由があってやってるんだろ?
0315nobodyさん2006/02/15(水) 14:53:21ID:???
cookie使えない携帯用とか
0316nobodyさん2006/02/27(月) 21:51:57ID:UfqSpQ0b
セッション管理ってよくわからないんですけど
要するにパスワードかなんかでふるいにかけても
URLで「login=ok」みたいに渡しちゃってたら誰でも入れてこれは困ったな
見たいになるのを防ぐものなんですか?
0317nobodyさん2006/02/28(火) 01:15:27ID:FEcOQ9wP
hiddenも普通に使う。要件による。当たり前。
0318nobodyさん2006/02/28(火) 08:22:56ID:???
>>316
>「login=ok」みたいに渡しちゃって
ということを普通は最初からしないので、何とも。
セッションはその名のとおり、C/S間のやり取りが
継続しているということを実現するための仕組み。

かといって特に新しいことも、物凄く高度なことでもなく
かつてPHPの標準のセッション機能が無い頃は、各々が
ごく当たり前に独自にセッション機能を作ってやってたもんだよ。
(PHPlibとかあったけど)
だから今でも、何も難しく考えることはない。ただあるものを使えばいい。
0319nobodyさん2006/03/12(日) 22:04:26ID:???
クッキーなんで偽造出来るんだけどね。
セッション乗っ取れば認証回避出来るよ。
0320nobodyさん2006/03/14(火) 02:05:53ID:???
セッション生成場所にF5アタックされたら
めちゃくちゃセッション作ってくれるとおもうんだけど
貴殿らどういう対策してる?
0321nobodyさん2006/03/14(火) 03:11:17ID:???
>>320
セッション生成場所に限らずF5アタックは嫌なので
httpdより前にブロックしてる。
0322nobodyさん2006/03/14(火) 03:56:20ID:???
>>320
F5アタックなら全部同じセッションになるんでないの?
0323nobodyさん2006/03/14(火) 21:59:30ID:???
>>321
ううむ、やっぱそのレベルで防がないとだめかー
スクリプトレベルで防ぐのはあんまり賢くないかな
たとえば何件いったら新規セッションを一時発行しなくするとかね

>>322
クッキー拒否だと新規セッションにならない?
0324nobodyさん2006/03/15(水) 02:07:44ID:???
クッキー切ってる香具師にはセッションを発行しなきゃいい
0325nobodyさん2006/03/15(水) 12:33:20ID:aJbbMre9
>>321
httpdより前でブロックって
何を使ったらできるの?
0326nobodyさん2006/03/15(水) 12:41:21ID:???
>>325
ルータじゃないの
0327nobodyさん2006/03/16(木) 00:21:52ID:???
企業ではセキュリティ上クッキー食べなくさせてる所も多いので、そう言う客も失う覚悟だな。
httpd自身(libwrappr)とか鯖のIP処理レベルとか、本命のファイヤーウォールとか。
ちなみにルータで処理させるとルータの負荷が騰がって、他の通信にも影響が出るから辞めるべき。

mod_php弄って特定IPからのアクセスにRSTパケット返しちゃうってのも、F5連打廚にはいいカモな。
03283212006/03/16(木) 01:53:28ID:???
>>325
自分が使ってるのはiptablesだから、そこの中で。
つかhttpだけじゃなくて、sshやftpへのブルートフォースアタックがかなり多いので、
それらもまとめて弾いてる。Apacheでやるなら、mod_dosevasiveみたいなまんまの奴や
帯域を絞るモジュールなど色々あるよ。

phpで対処するってのは、自分で手を出せるところの範囲が狭くて
どうしようもない時の残された方法かと。F5アタックならphpでなくても
負荷のかかるコンテンツならどこを狙っても良いわけだし。
レンタルサーバなら、収容している他のユーザが対処してないなら意味無いしね。
0329nobodyさん2006/03/19(日) 01:37:13ID:???
セッションをDBに保管する方法は幾つかあるかと思いますが
皆さんのところは何を使ってますか?
とりあえずうちは「session_pgsql」を使ってますが他になにかいいのないですかねぇ。
0330nobodyさん2006/03/19(日) 17:39:22ID:???
自作ハンドラなのらー
0331nobodyさん2006/03/19(日) 19:47:54ID:???
全くのスクラッチと言うかオリジナル?
何からパクりましたか?
0332nobodyさん2006/03/20(月) 20:33:13ID:???
Cookie必須にできないのでhiddenで引き回してるんだけど、
IPとブラウザのUA(吐かない場合あり)チェックだけだと
例えば社内LANとかでのハイジャックの危険性は残ったままだよね?
何かいい方法ないですか?
0333nobodyさん2006/03/22(水) 05:13:46ID:???
>>332
社内LANってやつからWAN(サーバ)へのアクセスがプロキシ経由やNAT経由ならね。
0334nobodyさん2006/03/29(水) 12:18:47ID:???
>>332
普通にIPが変わることもあるよ
0335nobodyさん2006/03/32(土) 12:40:07ID:/aohY8EP
<?
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();
      }
    }
  }
0336nobodyさん2006/03/32(土) 12:41:53ID:/aohY8EP
  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]);
    }
  }
}
?>
0337nobodyさん2006/04/02(日) 02:53:22ID:???
http://labs.cybozu.co.jp/cbl_rememberme/
0338nobodyさん2006/04/13(木) 10:40:48ID:YOyrE4Lu
携帯のランキングでセッションハイジャックしたいんですが、携帯のIPでの接続のみ
セッション発行してるみたいで、PCではセッションを採取できません。
特定のセッションが欲しいのではなく発行されているセッションであればOKです。
セッションの有効期限は3分?ランキングアウトPhpでセッション破棄しています。
何か有効な方法があれば教えてください。
0339nobodyさん2006/04/13(木) 11:45:21ID:???
>>338
シネバイイトオモウヨ
0340nobodyさん2006/04/13(木) 12:41:30ID:???
>>338
ツーホーしときますね
0341nobodyさん2006/04/13(木) 15:44:28ID:???
DoCoMoの社員になってDoCoMo鯖からソケット使ってセッション取るとか(w
まぁ昔のRanklink改造した奴なんか簡単にセッションハイジャック出来たが、
セッション管理をファイルでやっててそのファイルがあるディレクトリに穴でもない限りは無理やね。
0342nobodyさん2006/04/29(土) 20:43:42ID:???
いまさらだけど、PHPとセッションは関係ないじゃん。
関数の話がしたいならPHPスレじゃね?
0343nobodyさん2006/05/11(木) 17:30:38ID:???
君は何を言ってるんだね。
0344nobodyさん2006/05/11(木) 20:40:30ID:VDpWubyB
うわ。。
10日以上前の書き込みにレスしちまった。。

ヤケクソage
0345nobodyさん2006/05/12(金) 18:45:44ID:???
君は何を言ってるんだね。
0346nobodyさん2006/05/12(金) 23:27:13ID:???
10日くらい間空けろよ。







なんか期待しちまうじゃないかorz
0347nobodyさん2006/05/15(月) 01:15:16ID:???
でも力任せでセッションID生成して送りつければいつかは突破できそうだけどな。
そのまえに鯖が異常に重くなってあぼんするだろうけど(w
0348nobodyさん2006/05/17(水) 22:20:27ID:???
次のスレタイはこうだね。
PHPじゃないとセッションつかえないと思ってる香具師の数→
0349nobodyさん2006/05/19(金) 19:09:45ID:???
ちょっと質問ですが、WebアプリでセッションにクライアントIPアドレス
を入れるという実装って普通しますか?

IPアドレスなんて変わることが多いからそんなことしないかと思っていたの
ですが


0350nobodyさん2006/05/19(金) 19:18:14ID:???
結論としてはやめておいた方が良い。
再利用しているところが多いし、同じIPアドレスを使ってるPCだって結構ある。
0351nobodyさん2006/05/19(金) 19:22:28ID:???
再利用というのは、DHCPから配られるIPアドレスという意味でいいですか?

あと同じIPアドレスを使っているというのは、NATのことでしょうか?
それくらいしか思いつかなかった。
0352nobodyさん2006/05/19(金) 19:22:52ID:oMRPSSzC
データが通信途中全て第三者に取得されていると言う前提で、
SSLを使わないでデータを安全にやりとりする方法ってありますか?
JavaScriptとPHPでRSA暗号使ってやりとりしようと思ったのですが、
もっとスマートで対応するブラウザが多い方法ってありますか?
どなたかご存じの方教えていただけると嬉しいです。
0353nobodyさん2006/05/19(金) 20:14:41ID:???
>>351
NATもproxyも。
0354nobodyさん2006/05/19(金) 21:39:58ID:???
大企業やCATVとかでファイヤーウォール噛ませててインターネットからは一つのIPに見えてるってネットワークは有る。

RSAで簡単にやるのがSSLなんだけどね。わざわざSSL使わずにどうにかするほうが面倒で難しい。
03553522006/05/19(金) 21:59:02ID:???
SSLに対応しないブラウザの為に、、と考えていたんですが、
きょうびJavaScriptに対応しないブラウザよりSSLに対応しないブラウザの歩が珍しいかな。。orz
0356nobodyさん2006/05/19(金) 22:45:38ID:???
>>350
俺は「一応の保険」みたいな感じでやってるなー
もちろん単なる簡単な保険程度の扱いだけど。
0357nobodyさん2006/05/19(金) 22:52:14ID:???
>>350
作る「もの」によるかな?
シビアなチェックが要求されるものならIPチェックには頼らないが、セッションハイジャックされたところで
そんなに大したもんでもない程度のものなら、IPチェックすらしてないw
IPチェック程度を実装する事もある
みたいな。
0358nobodyさん2006/05/19(金) 23:02:07ID:???
>>349
>>357の書く通りそれに頼ってしまうのは間違いだけど、セッションハイジャックを防ぐ方法としては比較的一般的に使われてる手法。
http://www.google.com/search?num=50&hl=ja&q=%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%8F%E3%82%A4%E3%82%B8%E3%83%A3%E3%83%83%E3%82%AF+%EF%BC%A9%EF%BC%B0+%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0359nobodyさん2006/05/20(土) 10:09:53ID:???
セッションハイジャックを防ぐ手法一つとしての存在するのは理解できるのですが、
実際にどんな場合に利用してます?

個人的には無意味かなぁと思っていたのですが

保険的に利用する場合ってIPチェックして違った場合、ログを残すとかそんな感じですか?
0360nobodyさん2006/05/20(土) 12:50:03ID:???
>>359
>>358
0361nobodyさん2006/05/21(日) 17:21:39ID:???
セッションを使ったログイン・システムを作ったのですが、
ログイン後、操作をしない(通信をしない)時間が数分続くと、
勝手にログアウトしてしまいます。

ブラウザを閉じたわけでもないですし、session.gc_maxlifetimeは1440あります。
明示的にログアウト処理をしない限りログイン状態が続くようにしたいのですが、
どこの設定をいじれば良いのでしょうか・・・。
0362nobodyさん2006/05/21(日) 19:04:53ID:???
>>358
そこ読んだけど
IPチェックはあまり意味ないって言ってる気がするが?
0363nobodyさん2006/05/21(日) 22:09:56ID:???
>>362
そう。あんまり意味無い。
でも、全く意味が無いってわけでも無い。
つまり、それ程シビアなチェックを必要とされないものなら、この程度でも良いかもね程度に考えておけばと。

とにかくだな。
あくまで1つの手段としてこんなのもあるよって話しなので、気に入らないのなら別の方法を実装すれば良いだけの話。
頭で色々考えるのも良いが、まずは先に物を作って実際に動かした方が余程勉強になるかと。
0364nobodyさん2006/05/21(日) 22:13:15ID:???
>>363
↓書き方悪かったな。
まずは先に物を作って実際に動かした方が余程勉強になるかと。
↑っていうのは、自分でセッションを使う簡易的なサイトでも作ってみて、それを自分でセッションハイジャック出来るかどうか試してみたら良いよって感じかな。
ハイジャックできてしまったら、それを防ぐにはどうすれば良いかを考えて改良し、また自分でハイジャックを試す。
そんな感じで完成度を上げていくと良いかなって思う。
0365nobodyさん2006/05/22(月) 10:41:52ID:???
IPチェックだけは意味が無いね。
他との併用でしょ。セコムのシール貼ってるだけに近い。実際の防犯にはちゃんと対策が必要。


元々HTTPはステートレス。
セッションを使って無理矢理ステートフルに見せかけてるだけ。
NATとかkeepalive切ってる場合も有るから、鯖でがんばっても無理が有ることが多い。
03663612006/05/22(月) 19:04:58ID:???
放置されてるところを見ると、くだ質に行くべきでしたね。。。 行ってきます。
■ このスレッドは過去ログ倉庫に格納されています