ASP .NET MVC .UseStaticFiles不会遵循符号链接。
我很确定这是故意行为和极其错误的安全决定。如果将MBC用于托管一堆东西的文件服务器,这可能是有意义的。对于实际使用的Web应用程序没有意义。如果攻击者可以在wweroot目录中放置符号链接,则可以替换应用程序二进制文件。
它似乎是在PhysicalFileProvider中实现的,它获取完整路径并检查它是否在wwwroot下。 Nope。它调用System.IO.FileInfo.Length,它总是为符号链接返回零。
怎么告诉它闭嘴?遵循wwwroot的符号链接并不等同于某人利用了遍历错误。
答案 0 :(得分:1)
它在MVC Core中被窃听。见https://github.com/aspnet/Home/issues/2774
只有可能的解决方案:
HostingEnvironment.WebRootProvider = your own provider
您的提供商不得复制调用System.IO.FileInfo.Length的错误。
答案 1 :(得分:0)
我发现当你符号链接的不是 file 而是包含文件的 目录 时,文件会完全加载。