繁体   English   中英

如何使Web Service报告过载?

[英]How to make Web Service report overload?

我正在制作一个Web服务,该服务实现了接受输入参数并将其存储在数据库中的功能。 (代码是用Java编写的,使用NetBeans IDE编写,并部署在WebLogic服务器上。)类似这样的东西:

@WebService
class DataSaver {
    void saveData( ...data... ) {
        ...
    }
}

它已经完成并且似乎可以正常工作,所以现在我担心安全性:

如果太多客户端同时连接(或者有人会对我的站点进行拒绝服务攻击),那么服务器将无法正确处理所有请求,将会发生什么?

1)我希望服务器/应用程序不崩溃 有什么机制可以在过载的情况下发送请求? 它们是否默认启用? 如果没有,如何打开它们?

2)由于Web服务功能不返回值(如果可能的话,我希望保留其代码,如果可能的话),客户端只能通过HTTP错误代码来区分已处理请求和未处理请求 因此,我希望解决方案在过载的情况下返回HTTP错误代码。

我对Web服务和性能调优不是很熟悉(我更是一个理论程序员;算法和东西),所以我什至不知道要寻找什么。 在我看来,用Java解决这个问题似乎为时已晚-当消息到达我的代码时,XML请求已被解析。 我希望服务器配置中的某些参数可以处理此问题; 但是我没有成功通过Google找到它,也没有阅读WebLogic手册。 也许我使用了错误的关键字,或者我对如何解决此问题有一个完全错误的想法……这就是为什么部分答案也可能非常有用的原因。

如果您想防御DOS攻击,则可以获取软件/硬件来执行此操作。

如果要在代码中进行操作,则可以编写自己的javax.servlet.Filter。 您只需保留一个活动请求计数,然后使用HTTP 502或您需要的任何内容进行回复。

作为一般规则:不要编码,请使用。 它非常适用于DoS攻击的预防,Wikipedia拥有很好的“ 预防和响应检查表”列表

  • 防火墙配置
  • 开关配置
  • 路由器配置
  • 应用前端硬件
  • 基于IPS的预防
  • 基于DDS的防御系统
  • 黑洞和沉坑
  • 清洁管道

防止DoS是安全专家必须解决的一个硬问题(而且您的言论并非如此)。

如果仅是为少数客户端创建一个小型WebService,您甚至不必考虑防止DoS攻击,因为您不太可能遇到这种攻击。

如果出于对您有充分的理由对DoS预防是强制性的,那么请向安全专家询问,因为您必须考虑以下类型的DoS攻击:

  • ICMP洪水
  • SYN洪水
  • 泪珠攻击
  • 低速率拒绝服务攻击
  • 对等攻击
  • 饥饿攻击中资源利用的不对称性
  • 永久性拒绝服务攻击
  • 应用程序级洪水
  • 努克
  • RU-Dead-Yet?
  • 分布式攻击
  • 反映/欺骗攻击
  • 意外拒绝服务
  • 拒绝服务级别II

现在,如果您只是希望合法用户能够知道该服务是否运行良好或失败,请使用Web Server的经典行为:如果有太多合法用户同时连接,则您的代码将失败异常。 然后,您的Servlet服务器将以503 HTTP错误代码响应。 此代码将告诉您的用户出了点问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM