博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
防止开放重定向,恶意篡改returnUrl
阅读量:5306 次
发布时间:2019-06-14

本文共 1403 字,大约阅读时间需要 4 分钟。

 

1.防止开放重定向:

  

///         /// 防止开放重定向        ///         ///         /// 
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 passwordif (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl) ){return Response.Redirect(returnUrl);}return Response.Redirect("/");}

  

转载于:https://www.cnblogs.com/slwangzi/p/8496508.html

你可能感兴趣的文章
Quartus II 中常见Warning 原因及解决方法
查看>>
php中的isset和empty的用法区别
查看>>
Android ViewPager 动画效果
查看>>
pip和easy_install使用方式
查看>>
博弈论
查看>>
Redis sentinel & cluster 原理分析
查看>>
我的工作习惯小结
查看>>
把word文档中的所有图片导出
查看>>
浏览器的判断;
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
Leetcode 589. N-ary Tree Preorder Traversal
查看>>
机器学习/深度学习/其他开发环境搭建记录
查看>>
xml.exist() 实例演示
查看>>
判断是否为空然后赋值
查看>>
zabbix监控日志文件
查看>>
正则表达式
查看>>
pip install torch on windows, and the 'from torch._C import * ImportError: DLL load failed:' s...
查看>>
环套树
查看>>
java基础(一):我对java的三个环境变量的简单理解和配置
查看>>
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>