ASP .NET MVC .UseStaticFiles 不会跟随符号链接(symbolic link)。
我很确定这是故意行为,是一个极其错误的安全决定。如果将 MBC 用于托管一堆东西的 wen 服务器,这可能是有意义的。对于实际使用的 Web 应用程序,它没有意义。如果攻击者可以在 wweroot 目录中放置符号链接(symbolic link),他就可以替换应用程序二进制文件。
它似乎是在 PhysicalFileProvider 中实现的,它获取完整路径并检查它是否在 wwwroot 下。没有。它调用 System.IO.FileInfo.Length ,它总是为符号链接(symbolic link)返回零。
怎么叫它闭嘴?遵循 wwwroot 之外的符号链接(symbolic link)并不等于有人利用了遍历错误。
最佳答案
它存在于 MVC Core 中。见 https://github.com/aspnet/Home/issues/2774
唯一可能的解决方案:
HostingEnvironment.WebRootProvider = your own provider
您的提供商不得复制调用 System.IO.FileInfo.Length 的错误。
关于.net-core - 如何说服 asp.net MVC 静态文件遵循符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48218287/