【问题标题】:maxAllowedContentLength & maxRequestLength Set For Maximum, Security Loophole?maxAllowedContentLength & maxRequestLength 设置为最大值,安全漏洞?
【发布时间】:2014-09-09 09:43:12
【问题描述】:

我有一个 webapp (MVC 4),它的目的是对文件进行操作,它的工作方式是:

用户上传文件 -> 网站对文件进行操作 -> 用户再次下载文件(文件的新版本)。

所以我需要在我的网站中接受一个大文件大小,所以我做了什么:

 <system.web>
    <customErrors mode="Off"/>
    <compilation debug="true"/>
    <authentication mode="None" />
    <!--<compilation debug="true" targetFramework="4.5" />-->
    <httpRuntime targetFramework="4.5"  maxRequestLength="2097151" executionTimeout="3600"/>
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="4294967295"/>
      </requestFiltering>
    </security>

如您所见,我放大了“maxAllowedContectLength”以及“maxRequestLength”和“executionTimeout”值。

我的问题:

我的行为是否会在我的网站安全方面造成漏洞?

如果是这样,为什么?有更好的方法吗?我能做些什么来最大程度地减少威胁?

【问题讨论】:

    标签: asp.net asp.net-mvc security


    【解决方案1】:

    它不会造成安全漏洞,但它确实使攻击者更容易用大量请求淹没您的服务器。如果 maxAllowedRequest/ContentLength 设置为较小的值,攻击者将不得不发出更多请求以淹没服务器,并且服务器可能更容易检测/拒绝/处理这些较小的请求。

    ExecutionTimeout 较高会占用资源,否则这些资源可用于为您网站上的其他用户提供服务。

    有没有更好的方法呢?是的,使用外部服务上传大文件。谷歌驱动器/Dropbox/等。将繁重的处理工作转移到专门构建的服务上。如果您想自己处理而不是卸载给第三方,请考虑使用像 Amazon/Azure 这样的云服务。诀窍是将其移出您的主网络应用程序。

    【讨论】:

    • 我的 Web 应用程序位于带有 SQL DB 的 Azure 上,并且所有内容都位于 Azure 云上。你的意思是“考虑使用像 azure 这样的云服务,如果……”我该怎么办?我如何使用 Azure 服务来帮助我解决这个问题?我的应用程序中设置的这些设置,怎么可能是另一种方式?
    • @Ron 太棒了!对于 Azure,您需要创建一个新的存储帐户并使用 Blob Service REST API 存储您的上传。这可能看起来有点额外的努力,但会显着提高应用程序的可伸缩性
    • @RGaham 如果我理解正确,请让我理解,我需要:1)在我的“Web.Config”中恢复默认设置。 2)改变我从用户获取文件的方式(webapp方式):而不是以正常方式获取文件(上传到网站所在的服务器)我需要将文件发送到我的blob存储)3.实现我的服务器(虚拟机)上的一个 blob 存储,它将保存所有文件。底线:Web 应用程序不会处理文件,而是将它们发送到处理它的 blob 服务 API?
    • @Ron 没错。 Blob 服务旨在处理大文件。通常,Web 应用程序旨在服务于短期请求
    • 最好直接到blob存储。否则你会在 Web 服务器端遇到同样的开销问题
    【解决方案2】:

    此阈值用于保护您的网站免受 DOS 攻击(拒绝服务攻击) - 即想象一些合理数量的黑客向您的网站发送巨大(规模)请求 - 您的普通用户将无法使用它。在 ASP.NET 的条款中,将慷慨的阈值限制在实际执行繁重工作的页面。

    <location path="UploadFile.aspx">
      <system.web>
       ...
      </system.web>
    </location>
    

    一般来说,考虑一些云服务来为您完成繁重的工作(正如 RGraham 建议的那样)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 2020-03-21
      相关资源
      最近更新 更多