[PHP-users 32599] Re: セッションで制限しているページが見えてしまう
Nakao Takashi
kalze @ fakelife.info
2007年 9月 5日 (水) 12:38:53 JST
これはWindowsとIEの問題になってくると思うので、そうなると自分はホントに
わからなくなりますが。
> その通りなのですが、B.phpは最初に開いたブラウザから実行されるのではなく、
> 最初に開いたブラウザ(A.phpのソース)をローカルへコピーしたhtmlから実行される
> ということです。
> 通常、B.phpのアドレスがわかっているものとして、
> A.phpを開いている状態で、別にIEを起動して、直接入力でB.phpを実行しようとしても
> $_SESSION['abc']でエラーとして検地できます。
> ローカルへコピーしたhtmlを開くとき、別WindowのIEが起動するのですが、
> リンクをクリックすると、B.phpが実行できてしまいます。
ローカルへコピーしたhtmlを開くときに、Wクリックなど関連づけでIEを起動で
はなく、前者と同様にIEを起動してそこにD&Dなどして開いてもB.phpが実行でき
ますか?
なんとなく、前者の場合は、2つのIEは完全に別のものとして起動しているが、
後者の場合は最初に起動してある(A.phpを開いた)IEの関連プロセスとして
html表示しているIEが起動していて、最初に起動してあるIEの情報を引き継いで
いるのかなと。
つまり、A.php開いているIEをIE1、後からB.php開くIEをIE2とした場合、
前者はIE1とIE2はまったく共有しているものがない別のものとして起動している。
後者はIE1で新しいwindowで表示したときと同じようにいくらかの情報を引き継
いで起動している。
という状態なのではないかなと。
(あまり詳しくないので、用語とか適当です。すいません)
なので、ローカルのhtmlファイルを開くときに、
> A.phpを開いている状態で、別にIEを起動して、直接入力でB.phpを実行しようとしても
> $_SESSION['abc']でエラーとして検地できます。
と同様にして起動させたIEでそのhtmlを開いて、そのhtmlのアンカーでB.php開
いてみた場合に、B.phpのチェックはどうなりますでしょうか?
もし、チェックが通らないのであれば、自分の推測通りの状態なので、
仕様ですとしかいいようがないのではないかと。
その場合は、リファラもチェックして前のページがA.phpかどうか判断するくら
いしかないのではないかなと思います。
リファラなんて偽造もできるし、送らないように設定もできるので、信用度があ
るか?といわれたら、気休めくらいにはなるんじゃない?としか言えませんけど。
要は、
> ローカルへコピーしたhtmlを開くとき、別WindowのIEが起動するのですが、
このIEが、先に起動してA.phpを開いているIEと完全に別のものなのかどうかが
今回の問題なのではないかと。
簡単に試せることですが、ちょっと検証時間がとれないので・・・
PHP-users メーリングリストの案内