如何说服 asp.net MVC 静态文件遵循符号链接

Jos*_*hua 5 symlink asp.net-core-mvc .net-core

ASP .NET MVC .UseStaticFiles 不会遵循符号链接。

我很确定这是故意的行为,是一个极其误导的安全决定。如果将 MBC 用于托管一堆东西的 wen 服务器,这可能是有意义的。它对实际使用的 Web 应用程序没有意义。如果攻击者可以在 wweroot 目录中放置一个符号链接,他就可以替换应用程序二进制文件。

它似乎是在 PhysicalFileProvider 中实现的,它获取完整路径并检查它是否在 wwwroot 下。不。它正在调用 System.IO.FileInfo.Length,它总是为符号链接返回零。

怎么叫它闭嘴?跟随 wwwroot 之外的符号链接并不等同于有人利用了遍历错误。

Jos*_*hua 6

它在 MVC Core 中被窃听。请参阅https://github.com/aspnet/Home/issues/2774

唯一可能的解决方案:

HostingEnvironment.WebRootProvider = your own provider
Run Code Online (Sandbox Code Playgroud)

您的提供程序不得复制调用 System.IO.FileInfo.Length 的错误。