ASP.NET Core 预防开放式重定向攻击

写在前面

为预防钓鱼网站的常用套路,在进行 Web 应用程序的开发时,原则上应该将所有由用户提交的数据视为不可信。如果应用程序中包含了基于 URL 内容重定向的功能,需要确保这种类型的重定向操作只能在应用本地完成,或者明确判断其重定向到的是已知 URL,绝不能是 querystring 中可能包含的任何 URL。

ASP.NET Core 的 MVC基类中就提供了两种判断是否为本地URL的方法,这边做个记录;

两个方法分别为:LocalRedirect 和 IsLocalUrl 。

代码实现

cs 复制代码
        public ActionResult Index()
        {
            return Content("Index");
        }

        public IActionResult SomeAction(string redirectUrl)
        {
            return LocalRedirect(redirectUrl);
        }

        private IActionResult RedirectToLocal(string returnUrl)
        {
            if (Url.IsLocalUrl(returnUrl))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction(nameof(WeatherForecastController.Index), "WeatherForecastController");
            }
        }

调用示例

相关推荐
武子康2 小时前
大数据-143 ClickHouse 实战MergeTree 分区/TTL、物化视图、ALTER 与 system.parts 全流程示例
大数据·后端·nosql
Smilejudy2 小时前
5 个 JOIN vs 1 行 DQL:维度查询语言的降维打击
后端
王中阳Go2 小时前
订单支付后库存不扣减,如何用RabbitMQ来优化?
后端
Mos_x2 小时前
计算机组成原理核心知识点梳理
java·后端
初见0012 小时前
Git时间管理大师:Reset Current Branch to Here 全解析
git·后端
路多辛2 小时前
为什么我要做一个开发者工具箱?聊聊 Kairoa 的诞生
前端·后端
Cosolar2 小时前
国产麒麟系统 aarch64 架构 PostgreSQL 15 源码编译安装完整教程
java·后端
苏三说技术3 小时前
聊聊防御式编程
后端
IT_陈寒3 小时前
SpringBoot 3.2新特性实战:这5个隐藏功能让开发效率翻倍🚀
前端·人工智能·后端