maxAllowedContentLength& maxRequestLength设置最大,安全漏洞?

时间:2014-09-09 09:43:13

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

我有一个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”值。

我的问题:

我的操作是否会在我网站的安全性方面造成漏洞?

如果确实如此,为什么?还有更好的方法吗?我该怎么做才能最大限度地减少威胁?

2 个答案:

答案 0 :(得分:1)

它不会创建安全漏洞,但它确实使攻击者更容易在服务器充斥的情况下充斥您的服务器。如果将maxAllowedRequest / ContentLength设置为较小的值,则攻击者必须发出更多请求才能充斥服务器,服务器可能更容易检测/拒绝/处理这些较小的请求

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

有更好的方法吗?是的,使用外部服务上传大文件。 Google Drive / Dropbox /等。将重处理卸载到专用服务。如果您想自己处理此问题而不是卸载到第三方,请考虑使用像Amazon / Azure这样的云服务。诀窍是将其移出主Web应用程序。

答案 1 :(得分:1)

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

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

总的来说,考虑一些云服务为你做繁重的工作(正如RGraham建议的那样)。