解决方法
我假设你正在使用
login control.
您应该检查ReturnUrl参数是否是本地URL(而不是指向不同域的那个). loggedin event将是一个做这样的事情的好地方:
您应该检查ReturnUrl参数是否是本地URL(而不是指向不同域的那个). loggedin event将是一个做这样的事情的好地方:
void OnLoggedIn(object sender,EventArgs e) { string returnto = Request.QueryString["ReturnUrl"]; if (returnto != "" and isLocalUrl(returnto)) Response.Redirect(returnto); }
在哪里可以使用给定here的IsLocalUrl的定义
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; } }