在我们的asp.net Web应用程序的安全性审核期间,我们报告了一些输入字段并不限制服务器端的用户输入长度。执行报告中说,此漏洞可用于消耗服务器或数据库中可能导致拒绝服务攻击的大量资源。
我想问一下这里有什么选择来解决这个问题。当然,我们可以在Web服务器端为每个字段实现验证,例如如果输入超过某个预定义值,则抛出一些异常并拒绝。但我很好奇是否还有其他方法可以做到这一点。也许是web.config或IIS服务器级别的一些配置,一些全局处理程序等。
答案 0 :(得分:1)
在web.config中查看maxRequestLength
设置。
指定输入流缓冲阈值的限制,以KB为单位。此限制可用于防止例如由用户将大文件发布到服务器而导致的拒绝服务攻击。 默认值为4096(4 MB)。
<configuration>
<system.web>
<httpRuntime maxRequestLength="1024" />
</system.web>
</configuration>
这比限制每个字段更好,因为它保护您的应用程序整体,因为它听起来没有找到任何易受攻击的特定输入。
如果您希望此功能仅适用于您应用的某些部分,则可以使用<location>
元素添加覆盖:
<location path="Attachments/Upload">
<system.web>
<httpRuntime maxRequestLength="20480" />
</system.web>
</location>