Research Artisan Lite でのcookieを使いまわす
リサーチアルチザンライト。オープンソースで自由度が高いため導入しているサイトもあるのですが、そこで利用しているCookieを他プログラムから取得して制御を組み込みたい、という流れになりまして。
そこで乗り越える必要が出たのが、Cookieの範囲で設定すべきである、「Domain」と「Path」です。
リサーチアルチザンライトの場合
発行されるCookieは、管理画面でのみ利用されるようになっており、例えば管理画面のアドレスが「example.com/ra/」であった場合、Pathが「/ra/」と設定されるようになっています。
通常のCookie運用として正しい設定でしょう。
該当コードは ra_core 内の 「application\libs/Track.php」にあります。
1 |
self::setCookie(Config::COOKIE_UID, $uid); |
こう設定されている場合、/ra/ 以下にあるプログラムでないと、ここで発行されたCookieを読み取ることができません。
下記はCookieについて詳しいサイトからの引用です。
例:上位のディレクトリとして解釈される場合
「path=/abc」 と指定した場合、
ディレクトリが上下関係でないにもかかわらず下記結果となる。
/abc (読込可能)
/abcdef (読込可能)
/abc01 (読込可能)
/abcxyz (読込可能)
/ab (不可)
/abzz (不可)
出典:Cookie(クッキー)の届く範囲 (あいまいモード)
そういうわけで、例えばドメイン直下以下にあるプログラムから利用したい場合、次のように書き換えると読めるようにはなります。
1 |
self::setCookie(Config::COOKIE_UID, $uid, '', '/'); |
セキュリティ的にどうなのだろう?と考えたのですが、Cookie内容を見たところ、今回の場合はトラッキングの情報のみであり、それでログインしたり何かを行うわけではないので、良いかなという印象です。
しかしながら、その他の情報をCookie扱っている場合には注意が必要だと思います。関連のないCookieを切り分けておき、その他プログラムからアクセスできないようにしておくことはセキュリティの基本なのだろう、と思うのでした。
プログラムはセキュリティが絡むと一気に難しくなりますね…