【发布时间】:2014-09-22 15:06:11
【问题描述】:
我有一个服务器从许多客户端接收许多对象,并且每次接收到一个对象时都会触发 ObjectReceived 事件,包括在谁发送了什么的参数中。
问题:有一个客户端向我的服务器发出请求,但我的服务器总是响应。
我想根据谁发出请求来限制请求。例如,如果我在 1 秒内收到来自 100 个不同客户端的 100 个请求,并且每个客户端发出了不同的请求,我会响应每个发出请求的客户端;但是如果我在 1 秒内收到来自 2 个客户端的 100 个请求,并且每个客户端执行相同的请求 50 次,我只响应两次,一次响应客户端 A,一次响应客户端 B。
在 Rx 中可以吗?
【问题讨论】:
-
可能是。我们缺少一些信息。假设您想以 1 个请求/秒的速度响应,但烦人的客户端以 100 个/秒的速度发送它们。剩下的99个怎么办?排队?当队列有 1,000,000 个条目时会发生什么?内存不足?拒绝他们?如何拒绝?
-
你说得对,已编辑
-
您所面临的情况称为 DOS 攻击。安全性是您的应用程序的一个方面,在我看来,您应该在尽可能低的层中修复它。看看这个Prevent Malicious Requests - DOS Attacks 和Block DoS attacks easily in ASP.NET。还请查看最后一个链接的 cmets,以获取一些改进建议。
-
我当然同意最低级别的观点——也就是说,我必须制定政策来防止非恶意过度使用具有复杂业务领域规则的 API。不过,这些天来,这类东西越来越多地通过 API 托管产品(如 apigee、3scale 等)提供。甚至 Azure 现在也有。
标签: c# .net system.reactive