Что такое расширения файлов платформы .NET? - PullRequest
3 голосов
/ 24 июля 2011

Я установил mono платформу на свой сервер Linux и смог запустить ее за HTTP-сервером nginx.Система работает хорошо и без проблем работает с динамическими файлами .NET.

Однако я хочу передать только (и только) необходимые файлы (по расширению) в моно и позволить nginx обрабатывать все остальные файлы, включая статические, и файлы, которые не должны обслуживаться в нормальных условиях в .NETПлатформа.Я настроил свой nginx, как показано ниже, но - поскольку у меня недостаточно знаний о платформе .NET - я не уверен, какие расширения должны должны быть переданы в моно, а какие должны быть запрещены.

Вот соответствующая часть моего файла конфигурации nginx:

# Do not pass .NET forbidden extensions to anywhere.
# Theese are the extensions that should not be served to the clients
location ~ \.(config|dbml|dll|master|other|forbidden|exts)$ {
    deny all;
}

А вот часть конфигурации, которая передает требуемые (только обязательные) файлы в моно:

# Theese are the extensions which *must* be handled by mono
location ~ \.(aspx|cs|other|exts|that|must|be|handled|by|mono)$ {
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include         fastcgi.conf;
    fastcgi_index   default.aspx;
}

# Other static files will be handled by nginx.

Я нашел некоторые специфичные для .NET расширения файлов из записи в Википедии , но они далеки от завершения.

Поэтому у моего вопроса есть три подвопроса:

  • Что такое расширения файлов для платформы .NET?
  • Какие из них должны обрабатываться ядром .NET?
  • Какие из них являются конфиденциальными и не должны передаватьсяклиенты?

Это будет среда общего хостинга, поэтому любое отсутствующее расширение может привести к нежелательным последствиям для пользователя (например, раскрытие паролей пользователя или настроек приложения).

1 Ответ

7 голосов
/ 24 июля 2011

Вероятно, самое простое место для поиска - главный файл web.config, в котором объявлены базовые настройки для ASP.NET.Это включает <httpHandlers>, например:

<httpHandlers>
  <add verb="*" path="*.rules" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add verb="*" path="*.xoml" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false"/>
  <add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false"/>
  <add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True"/>
  <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True"/>
  <add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True"/>
  <add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True"/>
  <add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True"/>
  <add path="*.asmx" verb="*" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="False"/>
  <add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False"/>
  <add path="*.soap" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False"/>
  <add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.dll.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True"/>
  <add path="*.exe.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True"/>
  <add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.csproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.vbproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.webinfo" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.licx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.resx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.resources" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.mdb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.vjsproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.java" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.jsl" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ldb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ad" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.dd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ldd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.sd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.adprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.lddprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.exclude" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.refresh" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True"/>
  <add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="True"/>
</httpHandlers>
...