- - PR -
Application_BeginRequestとOSの関係について
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-19 22:40
お世話になります。
Application_BeginRequestについてご質問があります。 URL直接入力にて登録画面等への遷移を防止する為に、Application_BeginRequestにて 画面遷移の制御をしております。トップの画面とログイン画面については直接入力OK としており、UrlRefererプロパティが指定したURLと異なる場合は、トップのページへ遷移を行っています。 protected void Application_BeginRequest(Object sender, EventArgs e) { string strTop = "/XXXX/AAA.aspx"; string strLog = "/XXXX/BBB.aspx"; if (Request.FilePath == strLog) { } else { if (Request.FilePath != strTop) { Uri refUri = Request.UrlReferrer; if (refUri == null) { if (Request.FilePath == "/XXXX/CCC.aspx") { } else { Response.Redirect(strTop); } } else { if (!refUri.AbsoluteUri.StartsWith("http://www.DDD.jp/XXXX") && !refUri.AbsoluteUri.StartsWith("https://www.EEE.jp/XXXX")) { Response.Redirect(strTop); } } } } } 上記処理で遷移防止を行っておりますが、同じURLのログイン画面(https)→次の画面(http)へ遷移する際、トップページに遷移されてしまいます。しかし、OSによって遷移できる場合もあります。 Windows98 - IE6.0 SP1 遷移 ○ Windows office2000 - IE6.0 SP1 遷移 ○ Windows XP SP2 - IE6.0 SP2 遷移 × といった感じです。 何かOSの関係で処理できない事があるのでしょうか? ご教授の程、よろしくお願い致します。 | ||||||||
|
投稿日時: 2005-07-19 23:52
うーん、https→httpでリファラが取れるってまずいんでないのかな… | ||||||||
|
投稿日時: 2005-07-20 06:20
標準のセキュリティを利用すれば、ログインしていなければ特定のページ(ログインページ)へとばすことができます。
もっとも、ログインページからその URL へ行ってしまうので、ご期待の半分しか満足できないかもしれません。まぁ、その辺は、やりようがあるんじゃないかと。。。 | ||||||||
|
投稿日時: 2005-07-20 20:26
なちゃさん、Jittaさん、ありがとうございます。
https→httpの遷移で取れてるRequest.UrlReferrerは、暗号化された形の物が入ってる んでしょうかね? ということは、遷移できているOSやIEで動作した時は、httpsが利いていない????ということなんでしょうかね?じょじょに不安になってきました・・・。
ログイン画面で入力されたID・PasswordをSession変数に格納し、Application_BeginRequestの処理内でSession変数に値がなければページを飛ばそうと考えています。 | ||||||||
|
投稿日時: 2005-07-20 21:07
ID はともかく、Password はまずいでしょう。セッション管理がアウトプロセスや、SQL Server になっていたら、、、ねぇ? # インプロセス時にどういうことが起こるかも注意 _________________ | ||||||||
|
投稿日時: 2005-07-23 22:14
Jittaさん、ありがとうございます。
そうですよね・・。Passwordはますいですね・・。 ところで、Application_BeginRequestの処理内で、aspxにて設定したIDを格納しているSession変数の値を取得しようとしたんですが、「このセクションでは使用できません(だったと思います。)」というエラーが出て取得できないんですが、Application_BeginRequestではSessionを使う事ができないんでしょうか? 基本的な事かもしれませんが、ご教授いただきたく、よろしくお願いいたします。 | ||||||||
1
