首页 > 解决方案 > ASP.NET Core 如何通过限制请求大小来防止 DDoS 攻击?

问题描述

我最近创建了一个 API,允许上传视频和音频文件,它工作正常,直到一位客户上传了一个大视频,我收到了这个错误:

未能读取申请表。超过多部分正文长度限制 134217728。

从许多帖子中可以明显看出,请求大小限制背后的理念是减少 DDoS 攻击的机会。(如果我错了,请纠正我)。

但是,我自己上传了一个大视频,并在本地 PC 和服务器上观看了带宽。我有这个应用程序的 VPS,我可以使用任务管理器的性能选项卡,通过选择以太网并查看发送和接收图表来查看带宽。

关键是,当我上传文件时,我看到高流量持续了几分钟,然后我看到了那个错误。这意味着即使 ASP.NET Core 拒绝请求,服务器的资源也会被消耗。

所以,我不明白这部分。ASP.NET Core 如何通过限制请求大小来减少 DoS 或 DDoS 攻击的机会,而实际占用带宽?multipart/form-data如果请求有效负载/正文太大,甚至不消耗带宽,则逻辑方法是从一开始就删除内容类型的请求。

标签: asp.net-core-mvcddos

解决方案


Dotnet 只能通过上传文件来知道文件的大小(在您的示例中消耗带宽)。

解决这个问题的方法是为上传文件的大小设置一个较小的限制

dotnet 的工作方式是流式传输文件(一点一点地处理它)。一旦达到最大上传大小,它将返回错误。

没错,这并不能阻止攻击者上传许多大文件 - dotnet 仍然必须上传/流式传输它们,直到达到最大大小。减轻此类攻击的方法是通过其他方式 - 速率限制、IP 阻塞、CDN 上的 DDoS 保护等


推荐阅读