自托管安全问题?

时间:2019-04-01 17:50:46

标签: servicestack

使用selfhost .Net Core 2.x时,默认情况下将静态提供所有构建工件,因为默认目录与binary / exe位于同一位置。

这意味着如果知道dll的名称,他们就可以请求 它们位于/Whatever.dll,也可以按名称获取任何配置文件, 即appSettings。

如果更改内容以使根目录不同或该目录不在VFS中,则/ metadata停止工作。

是否可以使/ metadata工作,但不允许静态提供服务的dll等?

我尝试限制路径。这样可以保留设置/ dll / exe的服务,但/ metadata页将完全空白。

2 个答案:

答案 0 :(得分:1)

/metadata页面与静态文件目录位置无关,您可能已导致启动异常,该异常影响了它的工作方式。如果您可以在GitHub上放置一个独立项目,该项目显示了我可以调查的问题。

只能投放Config.AllowFileExtensions中的扩展名,您可以通过以下方式删除.dll

Config.AllowFileExtensions.Remove("dll");

.exe在默认情况下是不可用的,如果可以下载它们,则可能是使用.NET Core的静态文件处理程序来下载它们。

通常将WebRoot放在项目根目录之外,对于.NET Core,该根目录通常为/wwwroot

答案 1 :(得分:0)

编辑:更新了消除缺陷的建议。

我刚开始要做的是将.UseWebRoot()添加到 构建器,然后从自托管ServiceStack模板切换到 根据Mythz的建议添加到Web模板。该网页模板为 可以解决我的问题。

再次感谢。