防止开放重定向,恶意篡改returnUrl
2018-03-03 13:51
148 查看
1.防止开放重定向:
2.使用方法:
/// <summary> /// 防止开放重定向 /// </summary> /// <param name="url"></param> /// <returns></returns> public static bool IsLocalUrl(string url) { if (string.IsNullOrEmpty(url)) return false; bool result = ((url[0] == '/' && (url.Length == 1 || (url[1] != '/' && url[1] != '\\'))) || (url.Length > 1 && url[0] == '~' && url[1] == '/')); //绝对路径 if (!result && (url.StartsWith("http:", StringComparison.OrdinalIgnoreCase) || url.StartsWith("https:", StringComparison.OrdinalIgnoreCase))) { Uri absoluteUri; if (Uri.TryCreate(url, UriKind.Absolute, out absoluteUri)) { return String.Equals(HttpContext.Current.Request.Url.Host, absoluteUri.Host, StringComparison.OrdinalIgnoreCase); } } return result; //来自Mvc中的UrlHelper.IsLocalUrl,只能判断相对路径 //!string.IsNullOrEmpty(url) && ((url[0] == '/' && (url.Length == 1 || (url[1] != '/' && url[1] != '\\'))) || (url.Length > 1 && url[0] == '~' && url[1] == '/')); }
2.使用方法:
public void Login(string userName,string password, string returnUrl) { //logic code //validate userName password if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl) ) { return Response.Redirect(returnUrl); } return Response.Redirect("/"); }
相关文章推荐
- 如何防止恶意网页篡改注册表
- Java实现URI参数签名算法,确保应用与REST服务器之间的安全通信,防止Secret Key盗用、数据篡改等恶意攻击行为
- 如何防止恶意网页篡改注册表
- PHP、Java、C#实现URI参数签名算法,确保应用与REST服务器之间的安全通信,防止Secret Key盗用、数据篡改等恶意攻击行为
- Java实现URI参数签名算法,确保应用与REST服务器之间的安全通信,防止Secret Key盗用、数据篡改等恶意攻击行为
- Java实现URI参数签名算法,确保应用与REST服务器之间的安全通信,防止Secret Key盗用、数据篡改等恶意攻击行为
- 如何防止恶意网页篡改注册表
- 如何防止 Wiki 被恶意篡改?
- 隐藏Vista控制面板 防止系统被恶意篡改
- 利用错误重定向来防止未备案的恶意攻击
- 使用sudo进入root权限,以及防止root密码被恶意篡改
- asp.net mvc 防止开放重定向
- 小结"防止恶意网页篡改注册表" 推荐
- IDEA加密文件Base64转换String传输以及报文摘要MD5防止恶意篡改
- 如何防止Android apk 恶意篡改,爱加密APK安全加固
- Android开放模式过高授权 被指致恶意软件泛滥
- 屏蔽上网时弹窗广告,防止追踪、恶意域名,过滤横幅广告、以及视频广告的方法
- 防止恶意登录的设计思路
- javaWeb防止恶意登陆或防盗链的使用