Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何阻止对web API的黑客/拒绝服务攻击_Java_Android_Http_Security - Fatal编程技术网

Java 如何阻止对web API的黑客/拒绝服务攻击

Java 如何阻止对web API的黑客/拒绝服务攻击,java,android,http,security,Java,Android,Http,Security,上周,我的网站遭到拒绝服务/黑客攻击。该攻击通过循环中随机生成的无效API密钥攻击我们的web API 我不确定他们是想猜测一个密钥(从数学上讲,64位密钥是不可能的),还是想攻击服务器。攻击是分布式的,因此我无法禁止所有IP地址,因为它发生在数百个客户端 我猜这是IPs发布的Android应用程序,所以有人在Android应用程序中安装了一些恶意软件,并使用所有安装来攻击我的服务器 服务器是Tomcat/Java,目前web API只响应400个无效密钥,并缓存多次尝试无效密钥的IP,但仍然需

上周,我的网站遭到拒绝服务/黑客攻击。该攻击通过循环中随机生成的无效API密钥攻击我们的web API

我不确定他们是想猜测一个密钥(从数学上讲,64位密钥是不可能的),还是想攻击服务器。攻击是分布式的,因此我无法禁止所有IP地址,因为它发生在数百个客户端

我猜这是IPs发布的Android应用程序,所以有人在Android应用程序中安装了一些恶意软件,并使用所有安装来攻击我的服务器

服务器是Tomcat/Java,目前web API只响应400个无效密钥,并缓存多次尝试无效密钥的IP,但仍然需要对每个错误请求进行一些处理


有什么建议可以阻止这次袭击吗?有没有办法识别从HTTP头发出请求的Android应用程序?

防止暴力攻击:

有大量的工具和策略可以帮助您完成这项工作,而使用哪种工具和策略完全取决于您的服务器实现和需求

如果不使用防火墙、IDS或其他网络控制工具,您就无法真正阻止拒绝应用程序服务的DDOS。但是,您可以修改应用程序,使暴力攻击变得更加困难

执行此操作的标准方法是执行锁定渐进延迟。锁定可防止IP在X分钟内发出登录请求,如果他们未能登录N次。渐进式延迟会使处理每个错误登录请求的延迟越来越长

如果您正在使用Tomcat的身份验证系统(即,您的webapp配置中有一个
元素),那么您应该使用,它可以让您在IP地址发出大量错误请求时轻松将其锁定

如果您没有使用Tomcat的身份验证系统,那么您必须发布更多关于您正在使用的内容的信息,以获得更具体的信息

最后,您可以简单地增加API键的长度。64位似乎是一个难以逾越的巨大搜索键空间,但按照现代标准,它的重量不足。许多因素可能会导致其安全性远远低于您的预期:

  • 如果没有适当的保护措施,僵尸网络(或其他大型网络)每秒可能进行数万次尝试
  • 根据生成密钥和收集熵的方式, 事实上的键空间可能要小得多
  • 随着有效密钥数量的增加,需要 试图找到一个有效的(至少在理论上)下降 尖锐地
将API密钥长度增加到128(或256,或512)不会花费太多,并且会极大地增加任何暴力攻击的搜索空间(从而增加难度)

缓解DDOS攻击:

然而,要缓解DDOS攻击,您需要做更多的腿部工作。DDOS攻击是很难防范的,如果您不控制服务器所在的网络,这一点尤其困难

也就是说,您可以做一些服务器端的事情:

  • 安装和配置web应用程序防火墙,如拒绝违反您定义的规则的传入连接
  • 设置IDS系统,如检测何时发生DDOS攻击,并采取第一步缓解攻击
  • 另一个很好的选择是
  • 如前所述,创建自己的Tomcat
    ,以拒绝其
    用户代理
    (或任何其他标准)的传入请求,作为最后一道防线
然而,最终,要免费阻止DDOS攻击,您只能做这么多。服务器只有这么多内存、这么多CPU周期和这么多网络带宽;有了足够的传入连接,即使是最高效的防火墙也无法阻止您的崩溃。如果您投资于更高带宽的internet连接和更多服务器,或者在上部署应用程序,或者购买了许多消费者和企业DDOS缓解产品之一(),您将能够更好地抵御DDOS攻击。这些选项都不便宜、快捷或简单,但它们是可用的

底线:


如果您依靠应用程序代码来缓解DDOS,您已经失去了

如果D-DOS攻击严重,应用程序级检查根本不起作用。整个带宽将被D-DOS客户端占用,并且不会触发应用程序级检查。实际上,您的web服务根本不运行

如果您必须确保应用程序免受严重的D-DOS攻击,那么除了通过付费依赖第三方工具之外,您没有其他选择。根据我过去的经验,我可以信赖的清洁管道提供商(只发送良好流量)工具之一:

如果您的网站中的D-DOS攻击比较轻微,则可以实施应用程序级检查。例如,下面的配置将限制中引用的单个IP的最大连接数

--您可以更改此位置
MaxConn外围1
仅限音频/mpeg视频
有关D-DOS攻击的更多信息,请访问。它提供了预防和响应工具列表,包括:防火墙、交换机、路由器、基于IP的预防、基于D-DOS的防御

最后

清理管道(所有流量通过代理、隧道甚至直接电路等各种方法通过“清理中心”或“清理中心”,从而分离“坏”流量(DDoS和其他常见的互联网攻击),并仅将好流量发送到服务器之外)


您可以找到12家清洁管道分销商。

最好的方法是完全阻止您访问您的服务
<Directory /home/*/public_html> -- You can change this location
    MaxConnPerIP 1  
    OnlyIPLimit audio/mpeg video
</Directory>