kohi's blog

IT関連の技術やチェロ、演奏会感想、洋裁、手芸クラフト関係などを書き連ねるブログ。

セッションIDって実は勝手にリンクに埋め込むことができるっていうのを初めて知る転職1か月目。

転職してから大体一か月たちました

夢見た転職から早一か月たちました。
知らないことやできないことがテンコ盛りで、日々奮闘しております。
現在は携帯サイトの方の運用システムの保守っぽいことしてます。
アプリ開発できる日はいつになることやら…
ただ、チャンスはあるようなので、チャンスが転がってきたときにいかに万全の知識(と体力で)やります!って言えるかがポイントなようです。


phpの設定ファイルやセッションIDについて考える機会が来たようだ(今さら?)

前職では優秀な方たちがクラスやらライブラリやら作ってくれたり、開発環境とかは構築してもらっていたので、
今の会社ではそういう壁にぶち当たることが多々あります。
知らないでずっと開発してた、怖い!(白目)


で、今回はセッションIDについて。
今回一番書きたかったのが、掲題通り、【セッションIDって実は勝手にリンクに埋め込むことができる】っていうお話なので、
あとは惰性で調べたことをメモ程度に載せておきます。


ところでsessionIDってなーに?

セッションIDとは、ウェブサイトなどにアクセスしたユーザーのセッションを一意に識別するために、WebサーバやWebアプリケーションによって付与される情報のことである。通常は、Cookieとしてブラウザに対して付与されるが、Cookieを無効にしているユーザーにも対応するために、URLのリクエストパラメータの一部に付与される場合もある。
※引用
http://www.sophia-it.com/content/%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3ID

携帯サイトでのセッション管理

…は、この辺の記事がわかりやすいかも。

第5回 携帯サイトでセッションを取り扱う
http://gihyo.jp/dev/serial/01/mobilesite-php/0005

ブラウザがセッション管理を行う方法には大きく2種類あるそうで。
Cookieに保存する
・URLに付与する


携帯ではCookieが無効なことがあるらしい(?今どうなんだろ…)ので、
リクエストパラメータにセッションIDを入れていることが多いようだ。
でもこれってセキュリティ的にどうなの…


【本題】セッションIDって実は勝手にリンクに埋め込むことができる

今回触っているシステムが、勝手にリンクにセッションID埋め込んでいて
私的に凄く「???」だったわけだが、実はphpの設定でそうなるらしい。


知らない!そんなの知らないよ!
(このセッションIDどこからくっつけてるの!!ってやってました…)

php.iniで、こいつをonにすればいいらしい。

;php.ini
session.use_trans_sid = 1
セッション名はsession.nameに設定するっと。
;php.ini
session.name= PHPSESSID

すると、リンクに勝手に↓のようなパラメータ(セッションID)がつく。
例)
http://http://d.hatena.ne.jp/kohi_3/?PHPSESSID=XXXXXXXXXXXXXXX


関数でセッション名を取得するときは
//セッション名取得
echo session_name();

//output
//PHPSESSID

ただしこんな罠もあるようで…

PHP: use_trans_sidの注意点
http://bba-ltom.blogspot.jp/2008/05/php-usetranssid.html

■[php]session.use_trans_sidは外部ドメインへのformタグにも無差別に付加する
http://d.hatena.ne.jp/maru_cc/20080314/1205506607

簡単にまとめると
・コロンが付いているリンクへはセッションIDは付与されない
※外部サイト(http://〜がついてるもの)や、javascript:みたいなものがhrefに含まれているもの。

・formではhiddenで自動的にセッションID埋め込まれている。

とのこと。
色々恐ろしいuse_trans_sid…何故このような設定があるのか。。。
外部サイトにうっかりセッション情報が漏れてしまって乗っ取りが発生するのではなかろうか。
そもそもこの設定をオフにしておくか、セッション破棄(unset)とかしてから外部サイトにつなげないとダメ?
(そういえばそういう記事どっかにあったような。)


実際ケータイのcookie対応ってどうなってるの?

ケータイ各社のcookie対応状況について。

■参照■
国内ケータイ各社のcookie対応率がまとめられた記事「携帯Webのクッキー利用について調べてみたメモ」
http://ke-tai.org/blog/2010/05/21/cookietaio/

携帯Webのクッキー利用について調べてみたメモ【update】[Web系]
http://www.milkstand.net/fsgarage/archives/001690.html

docomoがあまり対応していないっぽい。
でもこの記事も古いから、どうなんだろう?
自分ではソースを漁ってくる気力が今ちょっとないので、また追々調べます。

そして今はここ数年でスマホが普及してるのでまた数値が違う気がする。
とりあえず、ガラケーの場合(を対象としているサイトを作る場合)は、
まだまだURLにくっつけないといけないのだろうか…


終わりに

今回あまりに自分が知ら無すぎて、昔の記事でも「へー!」状態だったので、
認証方式とか、もっと新しい情報がどっかに載っているのかもしれない。。。

とりあえず今回はsession.use_trans_sidのことやら、
セッションIDがどういうときに付与されるのかが調べられたのでちょっとだけ知識レベルが上がったってことで。。。


しかし、相変わらず、セッションIDが付与されるタイミングが微妙に良くわからない。
テンプレートを読みこみ終わった後にくっつけてるのだろうか…ぶつぶつ