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

调用示例

相关推荐
小诸葛的博客11 分钟前
client-go如何监听自定义资源
开发语言·后端·golang
入 梦皆星河11 分钟前
go原理刨析之channel
开发语言·后端·golang
Pandaconda16 分钟前
【新人系列】Golang 入门(十二):指针和结构体 - 上
开发语言·后端·golang·go·指针·结构体·后端开发
6<718 分钟前
【go】类型断言
开发语言·后端·golang
u0103731061 小时前
Django异步执行任务django-background-tasks
后端·python·django
hxung1 小时前
springboot项目中常用的工具类和api
数据库·spring boot·后端
唐人街都是苦瓜脸1 小时前
SpringBoot的简单介绍
java·spring boot·后端
xq5148632 小时前
Spring Boot 自动装配原理
java·spring boot·后端
阮瑭雅2 小时前
Python语言的网络安全
开发语言·后端·golang
淳于韻珊2 小时前
R语言的跨平台开发
开发语言·后端·golang