.net-core - 如何说服 asp.net MVC 静态文件遵循符号链接(symbolic link)

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

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/

相关文章:

c# - 从 TokenValidatedContext 获取签名

asp.net-core-mvc - 模型绑定(bind) bool 单选按钮如何在 .NET Core 中工作?

c# - ASPNET Core 服务器发送事件/响应刷新

php - 如何在 PHP 中获取符号链接(symbolic link)的原始路径?

c# - 使用 .NET Core 2.0 监视 Windows 上文件的更改

c# - 在 .NET Core 项目中找不到 System.ServiceModel

asp.net-mvc - 在 MVC 6 中从 DB 渲染 View

environment-variables - 如何将 env 变量传递给 GNOME

rust - 获取符号链接(symbolic link)指向的实际路径

c# - 我的 azure Http 触发器遇到错误,因为它不是异步的。为什么我的方法不是异步的?