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

调用示例

相关推荐
hrrrrb17 小时前
【Spring Boot】Spring Boot 中常见的加密方案
java·spring boot·后端
Lilian18 小时前
Trae通过ssh远程访问服务器linux系统不兼容问题
后端·trae
123445218 小时前
Spring Boot 启动流程全解析:从 SpringApplication.run() 到 Bean 初始化与自动配置
后端
Java中文社群18 小时前
我的网站被攻击了!
后端
程序定小飞18 小时前
基于springboot的在线商城系统设计与开发
java·数据库·vue.js·spring boot·后端
shengjk118 小时前
一文搞懂 java 中 POJO 和 bean 区别
后端
野犬寒鸦18 小时前
从零起步学习Redis || 第十一章:主从切换时的哨兵机制如何实现及项目实战
java·服务器·数据库·redis·后端·缓存
间彧18 小时前
AspectJ详解与项目实战指南
后端
爱读源码的大都督19 小时前
RAG效果不理想?试试用魔法打败魔法:让大模型深度参与优化的三阶段实战
java·人工智能·后端
间彧19 小时前
Spring Boot @Lazy注解详解与实战应用
后端