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

调用示例

相关推荐
GetcharZp2 小时前
拒绝低效!这款神器,让你的终端效率起飞 | 深度解析 fzf 终极指南
后端
自珍JAVA3 小时前
高效处理Long列表与集合运算:基于RoaringBitmap的工具类解析与应用场景
后端
小码哥_常3 小时前
Spring Boot项目上线秘籍:日志、监控、异常处理全攻略
后端
GreenTea4 小时前
AI 时代,工程师的不可替代性在哪里
前端·人工智能·后端
朦胧之4 小时前
AI 编程开发思维
前端·后端·ai编程
希望永不加班6 小时前
Spring AOP 代理模式:CGLIB 与 JDK 动态代理区别
java·开发语言·后端·spring·代理模式
浮游本尊7 小时前
一次合同同步背后的多阶段流水线:从外部主数据到本地歧义消解
后端
lv__pf7 小时前
springboot原理
java·spring boot·后端
段小二8 小时前
服务一重启全丢了——Spring AI Alibaba Agent 三层持久化完整方案
java·后端