如何使用Web API限制DOS攻击

Mat*_*att 6 security xss asp.net-mvc-4 asp.net-web-api

我打算使用MVC4和Web APi开发一个互联网站点.它是一个简单的应用程序,它将显示基于搜索的客户信息.

对于搜索功能,我使用Ajax get方法调用webApi(我知道我应该使用Post,但请考虑这是当前的实现).

我的Api电话是"/api/Data/getSearchResults/?companyName='" + companyName

我觉得这条线可以用作DOS攻击来降低我的服务器.有没有办法可以使用Microsoft Anti-XSS库或ValidateAntiForgeryToken属性或任何其他机制来确保请求是由真实用户而不是任何autoBots生成的.

我的网站启用了匿名访问.

mam*_*moo 6

有一个名为WebApiThrottle的库,它定义了一个ThrottlingHandler您可以根据调用者的 IP 或其他属性以编程方式限制每秒/分钟/小时...的请求数。

另一种选择是在 IIS 级别进行操作,当然您可以同时使用两者以获得更好的控制。


Sil*_*Fox 1

通过 DOS 攻击,我假设您指的是对系统的攻击,其中不断发出请求,以便由于对数据库不断执行公司搜索查询而导致资源耗尽。

为了防止这种情况发生,您可以记录每个请求的远程 IP 地址并限制响应,这样您每分钟只能向每个 IP 地址提供一定数量的服务。任何额外的请求都可以通过人为延迟来满足(例如Thread.Sleep())。这种方法对于远程 IP 地址范围很广的 DDoS 攻击的限制更大,并且还假设您的 IP 地址查找比公司搜索占用的资源更少,但它仍然会有所帮助。

MS Anti-XSS 只能保护您免受跨站脚本攻击,而不能防止DoS/DDoS。防伪造令牌只能保护您免受跨站请求伪造- 即使您有令牌,机器人也可以简单地请求您的页面获取令牌,然后将其提交到您的 API 函数。

验证码可能是另一种解决方案,但您需要他们在您的网页中输入验证码,然后在您的 API Web 方法中进行验证。