Asp.net core mvc ASP.NET Core如何通过限制请求大小来防止DDoS攻击?

Asp.net core mvc ASP.NET Core如何通过限制请求大小来防止DDoS攻击?,asp.net-core-mvc,ddos,Asp.net Core Mvc,Ddos,我最近创建了一个API,允许上传视频和音频文件,它工作正常,直到一位客户上传了一个大型视频,我发现这个错误: 无法读取请求表单。超出多部分正文长度限制134217728 从许多帖子中可以明显看出,请求大小限制背后的理念是减少DDoS攻击的机会。(如果我错了,请纠正我) 然而,我自己上传了一个大视频,并在本地PC和服务器上观看了带宽。我有一个用于此应用程序的VPS,我可以通过选择Ethernet并查看发送和接收图表,使用Task Manager的性能选项卡查看带宽 关键是,当我上传文件时,

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

无法读取请求表单。超出多部分正文长度限制134217728

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

然而,我自己上传了一个大视频,并在本地PC和服务器上观看了带宽。我有一个用于此应用程序的VPS,我可以通过选择Ethernet并查看发送和接收图表,使用Task Manager的性能选项卡查看带宽

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


所以,我不明白这部分。ASP.NET Core如何通过限制请求大小来减少DoS或DDoS攻击的机会,同时实际占用带宽?如果请求有效负载/正文太大,甚至不消耗带宽,逻辑上可以从一开始就删除
多部分/表单数据的请求。

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

解决这个问题的办法是

按照dotnet的工作方式,它将对文件进行流式处理(一点一点地处理)。一旦达到最大上载大小,它将返回一个错误

您是对的,这并不能阻止攻击者上载许多大文件-dotnet仍必须上载/流式传输这些文件,直到达到最大大小。缓解此类攻击的方法是通过其他手段-速率限制、IP阻塞、CDN的DDoS保护等