ここから本文です

解決済みの質問

知恵コレに追加する

asp.netのシステムでログオン認証機能を十分活用するためのアドバイスをお願いしま...

saya24_1さん

asp.netのシステムでログオン認証機能を十分活用するためのアドバイスをお願いします。

初心者なのですが、ログオン画面を作成し、データベースに蓄積された利用者IDとパスワードが合致しない限りは、次画面へ進行できないようにしました。
ここから質問です。

作成した他画面のhttpアドレスを直接入力されてしまうと、簡単に利用できてしまうセキュリティの甘さは通常どのように
回避すべきでしょうか?
Logon.aspxで得たログオンIDをセッション変数に保持し、これが他画面側でNothingに判断されたら初期画面Logon.aspxに遷移してしまう、というのが私の案です。
このロジックを全画面にいれなければならないのですが、皆さんもこんな感じなのでしょうか?

一応に私の案を採用し、他画面のhttpアドレスを直接入力してもLogon.aspxに戻るようなりました。が...
IEの機能で
ファイル-新規作成-ウィンドウという機能があると思います。かなりシステムの内部に進行してきている画面でこの操作を行ってしまっても、セッション変数までが複写されているようで、ログオンを介していないに限らずシステムが利用できてしまいます。

こういった甘さはしょうがないものと考えるべきでしょうか?

ちなみに一ユーザ一ブラウザの使用を確立するとした場合
DB側にログオン中とマーキングし、これをプログラミングで判断する他ないのでしょうか?

VisualStudio(ASP.NET)を使いこなせていないので、もしログオンのセキュリティーを高めるさまざまなコントロール、こういったことができる等の助言・参考になるホームページなどございましたら どなたかご教示頂けませんでしょうか。

長文、まとまりのない質問どうかご容赦下さい。

違反報告

ベストアンサーに選ばれた回答

ttkai00さん

> Logon.aspxで得たログオンIDをセッション変数に保持し、これが他画面側でNothingに判断されたら初期画面Logon.aspxに遷移してしまう

一般的な Web アプリケーションの作り方だと思います。ASP.NET にはもっと便利な機能はありますが(後述)、それを使わずに作るのなら、そういう機構にするのが普通でしょう。

> このロジックを全画面にいれなければならない

もちろんそれでもよいのですが、面倒なので global.asax でリダイレクトさせるのがよいと思います。

> ファイル-新規作成-ウィンドウ
> (中略)
> こういった甘さはしょうがないものと考えるべきでしょうか?

これは基本的にどうしようもないと思います。(方法がないとも言いませんが、面倒です。)ただ、私はこれが甘いとは思いません。これを行ったユーザーは「ログオンを介していない」わけではなく、ログオンを行ったユーザーのはずです。そのユーザーが新しいウィンドウを開いたというだけですから。「一ユーザ一ブラウザの使用を確立する」こと自体に、あまり意義を感じません。1ユーザーが複数のブラウザを使ってもよいと思います。その方が便利な場面もあるでしょうし。(この知恵袋もそうなっていると思います。)

念のため補足しておくと、セッション(厳密にはセッションIDを保存しているクッキー)は「ファイル-新規作成-ウィンドウ」の操作でコピーされているわけではありません。クッキーはブラウザのウィンドウごとではなく、ブラウザのアプリケーション自体で管理しています。

以下の手順を試してみるとわかると思います。以下のようなページ構成と仮定して説明します。

[ログインページ]
login.aspx
[ログインしていないとアクセスできないページ]
aaa.aspx

(1) IEを開いて、関係のないページを開いておく。
(2) (1) とは別のIEを開いて login.aspx からログインする。
(3) (2) で開いたIEを閉じる。
(4) 新しいIEのウィンドウを開いて aaa.aspx にアクセスする。

おそらく、(4) でセッションのチェックをしていたとしても、すり抜けると思います。(3) の後、IEをすべて終了させると、(4) で引っかかります。IE がすべて終了した時点で(有効期限の切られていない)クッキーは消滅するからです。


最後に、ASP.NET には認証機能付きのサイトを作るための多くの仕組みが用意されています。本来はそちらを使う方がよいと思います。こちらについては、参考になりそうなページを紹介しておきます。

http://hatsune.wankuma.com/(S(pi0bcc55zoldzfqdvlzhrs45))/vb/auth/au...

質問した人からのコメント

  • 成功いつもご支援をありがとうございます。例を交えてと~っても分かりやすい説明でした。
    何分はじめての構築で非常識なことをやっていないか確認したくなったわけで。

    global.asax とう機能があるのにも気がつかせて頂きました、これから挑戦してみたいと思います。ttkai00さんには頭があがりません。
  • コメント日時:2009/9/25 14:38:48

グレード

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 5点(5点満点中)2人が役に立つと評価しています。

PR

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

ただいまの回答者

11時27分現在

3619
人が回答!!

1時間以内に7,126件の回答が寄せられています。

>>回答ひろばに行く