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

调用示例

相关推荐
用户67570498850237 分钟前
Celery 太重了?这可能是你一直在找的 asyncio 任务队列
后端·python·消息队列
Cloud_Shy61838 分钟前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十一章 Python 包跟踪器 下篇)
前端·后端·python·数据分析·excel
神奇小汤圆1 小时前
为什么Redis能称霸缓存界?揭秘其每秒10万+读写的核心技术
后端
楼田莉子1 小时前
C++17新特性:结构化绑定/inline变量/if相关的变化
c++·后端·学习
无限进步_1 小时前
【C++】C++11的类功能增强与STL变化
java·前端·数据结构·c++·后端·算法
字节跳动数据库1 小时前
TRAE × 火山引擎 Supabase:为你的 AI 应用装上“数据引擎”
人工智能·后端
用户6757049885022 小时前
Python 统一大业:uv 如何整合 Pip、Pyenv 和 Venv?
后端·python
倚栏听风雨2 小时前
Spring AI 流式工具调用:你的 TOOL_CALLS Chunk 去哪了?
后端
归故里2 小时前
harmony-next.skills 为 AI 而生!
前端·后端·github
木雷坞2 小时前
NAS 放模型,GPU 跑 vLLM:一次启动卡住的排查记录
后端