- PR -

Application_BeginRequestとOSの関係について

1
投稿者投稿内容
チャベス
会議室デビュー日: 2004/09/09
投稿数: 7
投稿日時: 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の関係で処理できない事があるのでしょうか?
ご教授の程、よろしくお願い致します。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-07-19 23:52
引用:

チャベスさんの書き込み (2005-07-19 22:40) より:
上記処理で遷移防止を行っておりますが、同じURLのログイン画面(https)→次の画面(http)へ遷移する際、トップページに遷移されてしまいます。しかし、OSによって遷移できる場合もあります。

 Windows98 - IE6.0 SP1   遷移 ○
 Windows office2000 - IE6.0 SP1   遷移 ○
 Windows XP SP2 - IE6.0 SP2 遷移 ×

といった感じです。
何かOSの関係で処理できない事があるのでしょうか?


うーん、https→httpでリファラが取れるってまずいんでないのかな…
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-07-20 06:20
 標準のセキュリティを利用すれば、ログインしていなければ特定のページ(ログインページ)へとばすことができます。

 もっとも、ログインページからその URL へ行ってしまうので、ご期待の半分しか満足できないかもしれません。まぁ、その辺は、やりようがあるんじゃないかと。。。
チャベス
会議室デビュー日: 2004/09/09
投稿数: 7
投稿日時: 2005-07-20 20:26
なちゃさん、Jittaさん、ありがとうございます。

引用:

なちゃさんの書き込み (2005-07-19 23:52) より:

うーん、https→httpでリファラが取れるってまずいんでないのかな…


https→httpの遷移で取れてるRequest.UrlReferrerは、暗号化された形の物が入ってる
んでしょうかね?
ということは、遷移できているOSやIEで動作した時は、httpsが利いていない????ということなんでしょうかね?じょじょに不安になってきました・・・。


引用:

Jittaさんの書き込み (2005-07-20 06:20) より:

 標準のセキュリティを利用すれば、ログインしていなければ特定のページ(ログインページ)へとばすことができます。

 もっとも、ログインページからその URL へ行ってしまうので、ご期待の半分しか満足できないかもしれません。まぁ、その辺は、やりようがあるんじゃないかと。。。


ログイン画面で入力されたID・PasswordをSession変数に格納し、Application_BeginRequestの処理内でSession変数に値がなければページを飛ばそうと考えています。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-07-20 21:07
引用:

チャベスさんの書き込み (2005-07-20 20:26) より:

ログイン画面で入力されたID・PasswordをSession変数に格納し、Application_BeginRequestの処理内でSession変数に値がなければページを飛ばそうと考えています。


 ID はともかく、Password はまずいでしょう。セッション管理がアウトプロセスや、SQL Server になっていたら、、、ねぇ?

# インプロセス時にどういうことが起こるかも注意
_________________
チャベス
会議室デビュー日: 2004/09/09
投稿数: 7
投稿日時: 2005-07-23 22:14
Jittaさん、ありがとうございます。

引用:

Jittaさんの書き込み (2005-07-20 21:07) より:

 ID はともかく、Password はまずいでしょう。セッション管理がアウトプロセスや、SQL Server になっていたら、、、ねぇ?

# インプロセス時にどういうことが起こるかも注意




そうですよね・・。Passwordはますいですね・・。
ところで、Application_BeginRequestの処理内で、aspxにて設定したIDを格納しているSession変数の値を取得しようとしたんですが、「このセクションでは使用できません(だったと思います。)」というエラーが出て取得できないんですが、Application_BeginRequestではSessionを使う事ができないんでしょうか?
基本的な事かもしれませんが、ご教授いただきたく、よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)