Как заблокировать некоторые методы HTTP для определенного URL? - PullRequest
0 голосов
/ 27 июня 2018

В целях безопасности я хочу отключить некоторые методы http (например, OPTIONS, TRACE, HEAD) для URL на уровне приложения.

URL-адрес "mywebsite.com/bundles/"

Я пробовал это

<system.web>
<authorization>
    <deny verbs="OPTIONS" users="*" />
    <deny verbs="TRACE" users="*" />
    <deny verbs="HEAD" users="*" />
</authorization>

...

<httpHandlers>
    <add path="bundles" verb="OPTIONS" type="System.Web.DefaultHttpHandler" validate="true"/>
    <add path="bundles" verb="TRACE" type="System.Web.DefaultHttpHandler" validate="true"/>
    <add path="bundles" verb="HEAD" type="System.Web.DefaultHttpHandler" validate="true"/>
</httpHandlers>

И он блокирует методы http для всех приложений, но я хочу только для "/ bundles" и его файлов и подкаталогов.

Но "связки" - это не физический путь в моем приложении, а виртуальный

bundles.Add(new Bundle("~/bundles/Something").Include("~/Contents/Scripts/file.js"));
bundles.Add(new Bundle("~/bundles/Anything").Include("~/Areas/Import/Scripts/App/anotherfile.js"));

1 Ответ

0 голосов
/ 03 июля 2018

Вы должны иметь возможность использовать элемент <location>, чтобы ограничить любые вложенные директивы только указанным вами путем. Э.Г.

   <location path="bundles">
      <system.web>
         <authorization>
            <deny verbs="OPTIONS" users="*" />
         </authorization>
      </system.web>
   </location>

См. https://msdn.microsoft.com/en-us/library/b6x6shw7(v=vs.100).aspx

...