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

时间:2018-01-12 01:27:10

标签: .net-core asp.net-core-mvc symlink

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

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

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

怎么告诉它闭嘴?遵循wwwroot的符号链接并不等同于某人利用了遍历错误。

2 个答案:

答案 0 :(得分:1)

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

只有可能的解决方案:

HostingEnvironment.WebRootProvider = your own provider

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

答案 1 :(得分:0)

我发现当你符号链接的不是 file 而是包含文件的 目录 时,文件会完全加载。