如何阻止某些HTTP方法访问特定的URL?

时间:2018-06-27 13:47:39

标签: asp.net asp.net-mvc http web-config bundle

出于安全原因,我想通过应用程序级别为URL禁用一些http方法(例如OPTIONS,TRACE,HEAD)。

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 :(得分:1)

您应该可以使用<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