我如何说服 asp.net MVC 静态文件跟随符号链接
How do I convince asp.net MVC static files to follow symbolic links
ASP .NET MVC .UseStaticFiles 不会遵循符号 links.
我很确定这是故意的行为,是一个极其误导的安全决定。如果 MBC 用于托管一堆东西的 wen 服务器,这可能是有意义的。它对实际使用的 Web 应用程序没有意义。如果攻击者可以在 wweroot 目录中放置符号 link,他就可以替换应用程序二进制文件。
它似乎是在 PhysicalFileProvider 中实现的,它获取完整路径并检查它是否在 wwwroot 下。 不。它正在调用 System.IO.FileInfo.Length,对于符号 links,它总是 returns 零。
如何让它闭嘴?从 wwwroot 中跟随 symlink 并不等同于有人利用了遍历错误。
它在 MVC 核心中存在错误。参见 https://github.com/aspnet/Home/issues/2774
唯一可能的解决方案:
HostingEnvironment.WebRootProvider = your own provider
您的提供商不得复制调用 System.IO.FileInfo.Length 的错误。
我发现当您符号链接的不是文件而是包含文件的目录时,文件会完全加载。
ASP .NET MVC .UseStaticFiles 不会遵循符号 links.
我很确定这是故意的行为,是一个极其误导的安全决定。如果 MBC 用于托管一堆东西的 wen 服务器,这可能是有意义的。它对实际使用的 Web 应用程序没有意义。如果攻击者可以在 wweroot 目录中放置符号 link,他就可以替换应用程序二进制文件。
它似乎是在 PhysicalFileProvider 中实现的,它获取完整路径并检查它是否在 wwwroot 下。 不。它正在调用 System.IO.FileInfo.Length,对于符号 links,它总是 returns 零。
如何让它闭嘴?从 wwwroot 中跟随 symlink 并不等同于有人利用了遍历错误。
它在 MVC 核心中存在错误。参见 https://github.com/aspnet/Home/issues/2774
唯一可能的解决方案:
HostingEnvironment.WebRootProvider = your own provider
您的提供商不得复制调用 System.IO.FileInfo.Length 的错误。
我发现当您符号链接的不是文件而是包含文件的目录时,文件会完全加载。