如何在ASP.NET应用程序中拒绝路径的HTTP方法(或动词)

时间:2018-06-25 16:26:28

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

出于安全原因,我想通过应用程序级别禁用某些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>

但这不起作用

因此,我希望用户对 myapp.com/bundles/example

之类的任何链接进行OPTIONS,TRACE,HEAD请求时,得到 405方法不允许

谢谢

2 个答案:

答案 0 :(得分:2)

我会这样:

<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>

答案 1 :(得分:1)

尝试一下

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