2016-04-18 11 views
2

私は、管理者とビジネスメンバーのセッションを追跡するためにセッション変数を使用するASP.NETサイトを持っています。管理者がURLをコピーして電子メールで貼り付けると、ログインする前にログインしていないユーザーがクリックすると、管理者としてログインしたサイトにリダイレクトされるバグが発生しました。これは非常に大きなセキュリティ問題です。ユーザーがドメイン外からサイトに誘導されているかどうかを確認してから、新しいメンバーとしてサイトにリダイレクトする方法を教えてください。私のWebサイトへのトラフィックの起点を特定する方法

答えて

1

これは、ASP.NETがURLの一部として送信されるセッションIDを可能にすることを私に驚き。これはひどく不安です。

気づいたとおり、セッションIDをURLの一部として含めると、コピーおよびペーストされたURLにはそのセッションデータが含まれます。この問題を回避して、ユーザーがリンクをクリックしているか、実際にサイトをトラバースしているかどうかを判断できますが、これらの方法のいずれも悪意のあるユーザーによって無効になる可能性があります。

ユーザーが悪意のあるユーザーにURLを送信しないと主張することがあります。まず第一に、ユーザーは多くのばかげたことを行い、最も確実にURLをコピーして他の人に貼り付けます。次に、URLはすべての場所に記録され、これらのログにアクセスできるすべてのユーザーが利用できるようになります。

ASP.NETでセッションを処理する正しい方法は、コピー/貼り付けやログに記録されない場所から転送されないセッション状態のCookieを使用することです。 thisページによれば、ASP.NETはURLベースのセッションではなくクッキーを使用するようにデフォルト設定する必要があります。

URLベースのセッションをハッキングするのではなく、Cookieベースのセッションを使用するようにアプリケーションを設定します。

1

セッション変数とその作成者ipの間にマップを作成できますか?そうであれば、セッション変数の各使用がその作成者のIPによって実行されることを検証することができます。 ipsが異なる場合は、新しいメンバとしてリダイレクトする

0

"セッション識別子をリサイクルしないようにアプリケーションを設定することで、セッションデータを共有する機会を減らすことができます。これを行うには、sessionState構成要素のregenerateExpiredSessionId属性をこれは期限切れのセッションIDでcookielessセッション要求が行われたときに新しいセッションIDを生成します。

https://msdn.microsoft.com/en-us/library/ms178581.aspx

関連する問題