調べたこと 第二十一回

セッション
どんな場面でクッキーに保存すべきではないかというと、例えば
ゲームなどで、集めたアイテムや掛けたお金などの情報をクッキーで保存していれば、ユーザーがクッキーを書き換えて、数や金額を変更できてしまう。
そういった絶対に変えられてはいけない情報をサーバ側に保存する。
 
セッション機能があるプログラミング言語やライブラリでは、アクセスしてきたクライアントごとにセッションIDを渡して、クライアントをそれぞれ識別する。
このIDの保存領域に保存された情報はクライアントには見えないため安心。
 
このセッションIDの作成はプログラムの実行環境やライブラリで自動的に行われる。
セッションIDはクッキーを通してクライアントに渡される。
 
2回目にセッションIDをクッキーとして提出してくれる。保存領域は変わらない。
 
プログラムではこのように書く↓
 
session_start();    ー>この呼出によって、セッションIDの生成、保存領域との結びつき
          が可能になる。
if(!isset($_POST["order"])){  ー>入力値がない場合。
     unset($_SESSION["order"]);
} else{
     $ordervalue=$_POST["order"];
     $_SESSION["order"]=$ordervalue; ー>セッション変数に格納。
}
 
セッションに格納した値を参照するには、、↓
session_start(); ー>読み取るときもセッションスタートする。
if*1 || ($_SESSION["order"]=="")){
echo "商品が選択されていません"
}else{
$ordervalue=$_SESSION["order"]; ー>値を読み取る。
echo "の購入の手続きを開始いたします"
}
 
セッションIDを見る
開発者ツールを使ってクッキーを確認すると、アクセスした時に 「Set-Cookie」ヘッダ
が送信されていることが確認できる、
で、そこにランダムな文字列が並んでいるけど、それがセッションIDとなる。
ブラウザが閉じるまで有効。
 
セッションは、クッキーと違ってブラウザを閉じた時点でなくなるわけではなく、一定時間は残っている。サーバ側にはブラウザを閉じても残っているけど、PHPだと一時間に設定されているらしいけど、それくらいで無くなる。
 
逆に長いことブラウザを開いたままで、操作しなければクッキーは有効でセッションは消えてしまうという事が起こる。
そのときには、また違う新しい領域を作って割り当ててくれる。
 
セッションハイジャックを防ぐには、、、
1,セッションIDをクッキーを使って送るので、送信する時にSSL化しておくと、セッションIDをより予測不可能な文字列にできる。
たとえ、盗まれることがあったとしても解読するのに時間がかかる。
2,セッションIDは盗まれる前提で、最終決済のときなどに、もう一度ユーザ名&パスワードを再入力してもらうという作りにしておく。
 
 
 
 

 

*1:!isset($_SESSION["order"]