1.防止开放重定向:

 

        /// <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("/");
}

  

最新文章

  1. SQL Server output经典使用
  2. C# 遍历指定目录下的所有文件及文件夹
  3. MSXML读取XML中文
  4. Pintos-斯坦福大学操作系统Project详解-Project1
  5. php把文件上传到远程服务器上例子
  6. Failed to start SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse
  7. [1] Tornado Todo Day0
  8. 用 yo aspnet 生成.net项目
  9. Java框架之Spring MVC(二)
  10. Leetcode_171_Excel Sheet Column Number
  11. tensorflow分布式训练
  12. 多文件协作,extern、static、头文件
  13. 关于eclipse调试时程序控制台不能自动打开
  14. 怎样从外网访问内网Zeus?
  15. BZOJ1004 HNOI2008Cards(Burnside引理+动态规划)
  16. 主角场景Shader效果:遮挡透明
  17. java 和 C 代码运行效率的比较(整理)
  18. jdeveloper 恢复默认配置
  19. java中new一个对象放在循环体里面与外面的区别
  20. 解释一下python中的逻辑运算符

热门文章

  1. [PY3]——内置数据结构(3)——字符串及其常用操作
  2. 【TCP协议】MTU和MSS详解
  3. C# 文件上传 制作水印
  4. Hadoop学习笔记(8) ——实战 做个倒排索引
  5. 优化SQLServer
  6. 最短路问题(dijkstral 算法)(优化待续)
  7. 工作经验:mybatis 处理 oracle Long 类型
  8. 【Chromium】sandboxed window问题记录
  9. Foxmail邮件收取网易企业邮件配置
  10. 移动端HTML5实现文件上传