私は多くのasp.netアプリケーションをホストするWebサイトを持っています。 MVC2で書かれたものと、MVC3で書かれたものと、社内で書かれていないものとバイナリデプロイされたもの(ソースコードがありますが)がASP.Net 2.0 Webフォームに書かれています。これらすべてのサイトには、ログインアプリケーションの1つのログインページが使用されています。我々は、すべてのアプリケーションを共有しているため、これを行うことができます。カスタムFormsAuthenticationTicketの検証
- 同じアプリケーションプール
- 同じマシンキー
- 同じログインCookie名
を私の問題は、彼らはまた、セキュリティ上の問題を共有しています、クッキースプーフィング保護なし。 ログインクッキー(おそらくuseradataフィールド内)にいくつかの追加情報(ipの最初の2バイト、ユーザーエージェント)を追加して、すべてのリクエストでこれを確認してから、クッキーを受け入れる予定です。
私の質問は、フォーム認証チケットをチェックしてユーザーをロードする場所です。ログインを使用する前にいくつかの余分なことを確認するためにこれを上書きすることができます。
このコードをすべてのglobal.csに追加する必要がない場合はプラスになり、設定ファイルのdllを参照してdllを参照できます。
。 – Jeff
Global.asaxでApplication_AuthenticateRequestイベントを使用できますか?関連するコメントはここにあります:http://stackoverflow.com/questions/875472/authenticaterequest-event – SilverlightFox
asp.netがクッキーのIPチェックをしない理由は、それが非常にばかげた考えです。モバイルデバイスを使用している場合(分単位で変更可能)、ユーザーの動的IPが変更された場合、または共有プロキシがプールされている場合など、ユーザーのIPアドレスが変更される条件が多すぎます。さらに、これは、ファイアウォールの背後のあるマシンから同じファイアウォールの背後にある別のマシンにクッキーをコピーすることを防ぐものではありません。ユーザーはサイトを使用する能力を壊すことにより、ありそうもない脆弱性を修正しようとしていますが、それは正しく機能しません。 –