質問者
IIS設定によるURL直接指定の禁止

質問
-
妙な質問で恐縮ですが、IISの設定でブラウザ側のURLを直接入力した場合は
サイトの閲覧を拒否させることは可能でしょうか。
当方の環境は以下の通りです。
os:Windows2003
iis:6.0
.NetFramework:1.1
DB:SQLServer2000
Webアプリケーションの保守を行なっているのですが、
ユーザーが規定の入り口以外で、ブラウザから直接URLを指定されることで
想定している以外のAspxが呼び出され異常終了しゅる事態が発生しています。
アプリケーションの入り口を制限し、アプリケーションからのリダイレクトなり呼び出しの
時のみサイトを表示させるには、如何すれば宜しいでしょうか。
何方が解決法を御存知でしたら、御教示頂きたく存じます。
宜しく御願いします。
すべての返信
-
フォーム認証でもNGだと考えます。
ディープリンク(直接URL参照)に関しては
結局のところプログラムのつくりによるところが大きいと思います。
たとえばセミナーの申し込みサイトで申し込みの最終確認画面をブックマークにとってから
申し込みを完了させた場合、そのユーザが保存したブックマークから申し込みページを表示させた場合
「このセミナーには既に登録されています」等のメッセージを出し重複した申請ができないような
つくりである必要があると思います。
つまりフォーム認証などの認証済みユーザがブックマークからディープリンクをたどった場合に
適切なエラーメッセージが表示されるかどうかは確認の必要があると思います。
言葉たらずの点があればご指摘ください。
-
ここはブラウザの挙動になりますが
認証済みユーザがブックマークを利用してGETリクエストを行った場合
認証チケットが無効になるようであれば問題ないのですが、
この場合、認証済みユーザのリクエストとみなされる様な気がします。
例:http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet19/aspnet19_01.html の例によると
- default.aspxにリクエストするとlogin.aspxに誘導される
- アカウントを入力し認証情報を「記憶せずに」ログインする
- default.aspxが表示されるのでここをブックマーク
- 「管理ページ」ボタンを押し、管理用ページadmin.aspxを表示する
- ここで先ほど保存したブックマークによるアクセスを行う(またはURLでdefault.aspxへ移動する)
- 「フォーム認証済みユーザ」であるためdefault.aspxページが表示できる
- ブラウザを閉じ、再度ブラウザを立ち上げて先ほどのブックマークによるアクセスを行うと1.と同じ挙動
この手順6.の挙動が問題なければフォーム認証でいいと思います。
ポイントは「未認証ユーザが直接URL参照されたら、入り口ページへとにかく入る事」(この解釈で合ってます?)
考えすぎかもしれませんが。
参考までに:リファラチェックを行うHTTPModuleを作った人も居るようです
http://www.irritatedvowel.com/Programming/DeepLinkingHttpModule.aspx
-
まとめると、今回の問題でこうしたら良いと私が思っている方法は
- ユーザが直接URL参照で入り口ページ以外のページを参照する。
- 1 のユーザは認証されていないので、入り口ページへ遷移する。
- 入り口ページでは無条件に認証させる(ユーザに認証情報を入力させる必要なし)。
- 3 を経ているので、他のページへ遷移できる。
とにかく、一度入り口ページに入りたいと読み取れましたので、これで十分かなと思います。
Moo さんの手順6についても、同じセッションであればOKというのであればフォーム認証でOKです。ダメなら他の方法を考えないといけません。
ただ、ASP.NET の認証なので、.html などの静的ページも含みたいなら、IIS の isapi の構成を変更してください。
>参考までに:リファラチェックを行うHTTPModuleを作った人も居るようですリファラチェックだと、正当な遷移をしている人が弾かれる場合(変なセキュリティ系ソフトがリファラを隠す)があるので個人的にはどうかと思います。