オープンリダイレクト攻撃を防止するための最良の方法は何ですか?現在、私はasp.netウェブサイトを開発しています。ログインに成功すると外部リンクにユーザーをリダイレクトしないようにしたいのですか?オープンリダイレクト攻撃を防ぐ方法は?
編集:既存のコードを変更せずにソリューションを実装することは可能ですか?
オープンリダイレクト攻撃を防止するための最良の方法は何ですか?現在、私はasp.netウェブサイトを開発しています。ログインに成功すると外部リンクにユーザーをリダイレクトしないようにしたいのですか?オープンリダイレクト攻撃を防ぐ方法は?
編集:既存のコードを変更せずにソリューションを実装することは可能ですか?
login controlを使用しているとします。 ReturnUrlパラメータがローカルURLであり(別のドメインを指していない)チェックであることを確認する必要があります。あなたはhere
private bool IsLocalUrl(string url)
{
if (string.IsNullOrEmpty(url))
{
return false;
}
Uri absoluteUri;
if (Uri.TryCreate(url, UriKind.Absolute, out absoluteUri))
{
return String.Equals(this.Request.Url.Host, absoluteUri.Host,
StringComparison.OrdinalIgnoreCase);
}
else
{
bool isLocal = !url.StartsWith("http:", StringComparison.OrdinalIgnoreCase)
&& !url.StartsWith("https:", StringComparison.OrdinalIgnoreCase)
&& Uri.IsWellFormedUriString(url, UriKind.Relative);
return isLocal;
}
}
ありがとう、@パオロ、しかし、私は既存のコードを変更したくない、実装することは可能ですか? – kvc
再コンパイルできないという制約がある場合、この変更はログインページのHTMLで直接インラインで行うことができます([LoggedInイベントのドキュメント]を参照)。http://msdn.microsoft.com/en-us/library例としては/system.web.ui.webcontrols.login.loggedin.aspx) –
WebフォームまたはMVC与えIsLocalUrlの定義を使用することができます
:loggedin eventはこのような何かを行うには良い場所でしょうか? –
私はwebformsを使用しています – kvc