Как запретить HTTP-методы (или глаголы) для пути в приложении ASP.NET - PullRequest
0 голосов
/ 25 июня 2018

В целях безопасности я хочу отключить некоторые методы http (например, OPTIONS, TRACE, HEAD) на уровне приложения.Я хочу сделать это для всех файлов в каталоге "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"));

Теперь я попробовал это (в Web.config)

<system.web>
  <httpHandlers>
    <add path="bundles/" verb="OPTIONS,TRACE,HEAD" type="System.Web.HttpMethodNotAllowedHandler" />
  </httpHandlers>
</system.web>

но это не работает

Итак, я хочу, чтобы пользователь получал 405 метод, не разрешенный при выполнении запросов OPTIONS, TRACE, HEAD для любой ссылки, например myapp.com/bundles/example

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Я бы сделал так:

<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>
</system.web>
0 голосов
/ 25 июня 2018

Попробуйте это

<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"/>
...