【问题标题】:How to deny HTTP methods (or verbs) for path in ASP.NET app如何拒绝 ASP.NET 应用程序中路径的 HTTP 方法(或动词)
【发布时间】:2018-06-25 16:26:27
【问题描述】:

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    我会这样做:

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

    【讨论】:

    • 它适用于所有应用页面,但我只需要拒绝此链接“example.com/bundles”的方法
    【解决方案2】:

    试试这个

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

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 2021-04-13
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 2017-04-04
      相关资源
      最近更新 更多