WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:セッションを使用しないASPログオンの管理について

0:[投稿] Kaneshiro [URL] [2004/04/08 14:35 ][環境:IE5.5 または IE6 Windows 2000 Server, IE5.5]

ASPのログオンでセッションを使用しないようにし、
ログオンに成功したときに、1.のサイト(メニュー画面)に
アクセスしますが(IDは、ユーザーIDです)、
1.「"http://woo/main.asp?ID=2000"
別のブラウザを立ち上げて、ログオンせずに、上の行を
アドレステキストにコピーすると、
ログオンしなくても、1.のサイトに入ってしまう
現象があります。
セッションを使わずに、この現象を防ぐ方法について
教えていただけませんでしょうか?


1:[回答] AC [2004/04/08 21:48 ]

Cookieも×と仮定すると、とれる方法は1回きりのURIを与えるぐらいしかないと思います。
http://woo/main.asp?ID=2000&SessID=RAnDoMsTRiNg
みたいにランダムなURIを生成し、1回アクセスしたら、2回目以降アクセスしてもエラーとするということです。


2:[質問] Kaneshiro [URL] [2004/04/13 18:36 ]

Cookieを有効にするとして、
ログオンに成功したときに、SessIDの値を
クッキーに保存するんですが、
IEブラウザが閉じられた時点で
Cookieを破棄する(SessIDの値をクッキーから消去)
方法はないのでしょうか?
また、クッキーの値を別ブラウザから取れなくする
方法についても教えていただけませんでしょうか?
(開いているブラウザにのみ有効とすること)
ただし、セッションを使わないことには変わりありません。


3:[回答] AC [2004/04/13 20:36 ]

まずセッションが駄目なのはなぜでしょうか。それによって、とることのできる方法が変わってきます。

>IEブラウザが閉じられた時点で
>Cookieを破棄する(SessIDの値をクッキーから消去)
>方法はないのでしょうか?
Kaneshiroさんの言う「ブラウザが閉じられた」というのが、「ウインドウを1つ閉じる」を意味するのか、「ウインドウを全て閉じる(アプリケーションを終了する)」を意味するのか分からないです。どちらでしょうか。

>また、クッキーの値を別ブラウザから取れなくする
これも意味が分かりません。別ブラウザというのがIEの別ウインドウなのか、それともMozillaとかOperaとかいった別ブラウザなのか読み取れません。


4:[回答] Kaneshiro [URL] [2004/04/14 09:14 ]

1. クッキーの値を別ブラウザから取れなくする
 別ウィンドウのブラウザ(ブラウザの種類を問いません)
 のことです。例えばブラウザウィンドウA(IEとします)
 にクッキーにSessIDの値をセットし、
 ブラウザウィンドウAを閉じずに、
 ブラウザウィンドウB(ブラウザの種類を問いません)
 を開きますが、ブラウザウィンドウAにセットした
 SessIDのクッキーの値を、ブラウザウィンドウBから
 SessIDのクッキーの値を取得できないようにすることです。

2. IEブラウザが閉じられた時点でCookieの値を破棄する
 ブラウザウィンドウA(ブラウザの種類を問いません)と
 ブラウザウィンドウB(ブラウザの種類を問いません)
 を同時に開いた場合、ブラウザウィンドウBを閉じた時点で
 ブラウザウィンドウBからセットした
 SessIDのクッキーの値のみを破棄することです。
 もちろん、ブラウザウィンドウAからセットした
 SessIDのクッキーの値は破棄しません。
 
3. セッションを使用しない理由
 ASPのセッションと3つのフレーム(上、左下、右下)
 を使って、左下の「ログオンページ」リンクを
 クリックすると、右下に「ログオン画面」を出し、
 ログオンに成功したら、左下にメインメニューを出し、
 ブラウザの「戻る」ボタンで「ログオン画面」に戻して
 再度ログオンを行うと、勝手にフレームが解除されて
 再度ログオン画面が表示されるという不具合がありました。


5:[質問] Kaneshiro [URL] [2004/04/14 11:23 ]

>>4
にある、1. クッキーの値を別ブラウザから取れなくする
ができないのであれば、
ブラウザウィンドウAとブラウザウィンドウB
を同時に立ち上げたとき(使用しているマシンは同じとし、
ブラウザもバージョンもAとBは全く同じIE5.5で、
見ているURLもAとBも全く同じ状態です)、
ブラウザウィンドウAとブラウザウィンドウB
を識別する方法はないのでしょうか?

クッキーを利用する際、
ブラウザウィンドウAであれば、
利用したい変数名を:SessID+ブラウザウィンドウAの画面IDとし、
ブラウザウィンドウBであれば、
利用したい変数名を:SessID+ブラウザウィンドウBの画面IDと
したいためです。

ちなみに、Windows 2000のタスクマネージャで見ると、
ブラウザウィンドウAとブラウザウィンドウBの
PID(プロセスID)は、全く同じであるため、
PIDでは識別できないことがわかりました。


6:[回答] AC [2004/04/14 20:05 ]

>>4
> 3. セッションを使用しない理由

そういう現象が起こるのは、ログオン時にフレームを解除するようなASPを作っているからであって、セッションの問題ではありません。ASPの方をチェックして下さい。

ブラウザの「戻る」ボタンでログオン画面まで戻っても、セッションが破棄されるわけではありません。したがって、2回目のログオン時には、1回目と同じセッションで行われます。その辺を考慮して下さい。

>>5
「同じURL」の場合に区別するのは不可能です(GETメソッドの場合)。
ログオン時にブラウザウィンドウAは http://woo/main.asp?ID=2000&winid=A というURLに飛ばし、ブラウザウィンドウBは http://woo/main.asp?ID=2000&winid=B というURL に飛ばします。 main.asp からのリンク先やフォーム送り先のURLには全て winid=x というパラメータが付くようにしておき、そのパラメータからウィンドウを区別するようにします。


7:[保留] Kaneshiro [URL] [2004/04/15 10:11 ]

ログオン時にフォームを使用しますが、
このFORMタグ(認証チェックのaspに進む)の中に、
TARGET="_top"属性を使用しているため、
ログオンに成功した後、ブラウザの「戻る」ボタンで
「ログオン画面」に戻して再度ログオンを行うと、
勝手にフレームが解除されてしまうことがわかりました。
セッションの使用を見直します。
また、セッションを使用してログオンに成功したときに、
しばらく何も操作しないでセッションのタイムアウトが
生じた場合に、何か操作をすると、起動時の画面に
勝手に戻ってしまうだけでなく、フレームの解除も
同時に行う方法について模索します
(フレーム解除を加えなければ、セッションの
タイムアウトで、画面表示がほぼ二重になってしまうため)。
いろいろとお手数をおかけしました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World