Проблема безопасности самостоятельного хостинга?

#servicestack

#servicestack

Вопрос:

При использовании самохостинга .Net Core 2.x все артефакты сборки статически обслуживаются по умолчанию, поскольку каталог по умолчанию находится в том же месте, что и двоичный файл /exe.

Это означает, что если кто-то знает имена библиотек DLL, они могут просто запросить их по адресу /Whatever.dll или они также могут получать любые конфигурационные файлы по имени, то есть AppSettings.

Если вы измените настройки таким образом, чтобы корневой каталог был другим или этого каталога не было в VFS, /metadata перестанет работать.

Возможно ли, чтобы / metadata работал, но не разрешал статическое обслуживание DLL-файлов службы и т.д.?

Я пытался ограничить пути. При этом настройки / библиотеки dll / exes не будут доступны, но страница /metadata откроется полностью пустой.

Ответ №1:

/metadata Страница не связана со статическим расположением каталога файлов, возможно, вы вызвали исключение при запуске, которое повлияло на то, как это работает. Если вы можете создать отдельный проект на GitHub, который показывает проблему, я могу расследовать.

Могут обслуживаться только расширения в Config.AllowFileExtensions , которые вы можете удалить .dll из обслуживания с:

 Config.AllowFileExtensions.Remove("dll");
  

.exe по умолчанию они недоступны для обслуживания, если вы можете загрузить их, возможно, вы загружаете их с помощью статического обработчика файлов .NET Core.

Обычно веб-корень находится за пределами корня проекта, который для .NET Core обычно является /wwwroot .

Комментарии:

1. спасибо — одна вещь, которую я обнаружил при самостоятельном размещении, заключается в том, что VFS, похоже, настроена на обслуживание из каталога запуска приложения, независимо от того, какой установлен WebHostPhysicalPath. Возможно, я делаю что-то неправильно, но я устанавливал это с помощью SetConfig() в методе Configure.

2. @cmac это потому, что selfhost — это простая конфигурация без . Соглашения NET Core по умолчанию заключены в WebHost. CreateDefaultBuilder() .

Ответ №2:

редактировать: Обновлено предложение по устранению неполадок.

В итоге сначала я добавил .UseWebRoot() в конструктор, а затем переключился с шаблона самостоятельного размещения ServiceStack на веб-шаблон по предложению Mythz. Веб-шаблон был настроен таким образом, что решил мою проблему.

Еще раз спасибо.

Комментарии:

1. Не модифицируйте VFS подобным образом, вместо этого измените WebRoot в .NET Core , ожидается, что файловая система в VirtualFileSources будет настроена на WebRoot. Вероятно, вам лучше начать с веб шаблона. Все. Приложения NET Core — это веб-приложения для самостоятельного размещения, разница между selfhost и web заключается в том, что у selfhost меньше deps и он запускается без конфигурации .NET Core, тогда как web шаблон проекта — это пустой шаблон с соглашениями .NET Core.

2. Отличный момент и гораздо лучший подход. Похоже, я обдумал это и не понял, для чего на самом деле были настроены шаблоны. Я ценю, что вы указали мне правильное направление. Теперь я определенно понимаю ситуацию намного лучше и делаю так, как вы предлагаете.

3. Не могли бы вы, пожалуйста, обновить свой ответ, чтобы удалить это предложение? Это предоставляет неправильное решение / руководство, спасибо.