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

调用示例

相关推荐
哈喽姥爷15 小时前
Spring Boot--Bean的扫描和注册
java·spring boot·后端·bean的扫描和注册
problc15 小时前
Spring Boot `@Service` 互相调用全攻略:`@Autowired` vs `@Resource`
java·spring boot·后端
文心快码BaiduComate15 小时前
文心快码3.5S全新升级,体验多智能体协同开发,最高赢无人机!
前端·后端·程序员
就是帅我不改16 小时前
10万QPS压垮系统?老司机一招线程池优化,让性能飞起来!
后端·面试·github
uzong16 小时前
系统稳定性保障:研发规约V1.0
后端
Ray6616 小时前
log4j2.xml配置文件详解
后端
Frank_zhou16 小时前
Easy-Es 架构设计详解
后端·elasticsearch
狗头大军之江苏分军16 小时前
Meta万人裁员亲历者自述:小扎尝到了降本的甜头
前端·后端·github
Jagger_17 小时前
SonarQube:提升代码质量的前后端解决方案
前端·后端·ai编程
在逃牛马17 小时前
【Uni-App+SSM 宠物项目实战】Day6:MP 实体类与 Mapper 生成
后端