这个求大神说明原理。百思不得其解!!!怎么会威胁到java

解决方案 »

  1.   

    应用服务器采用 HashMap 或者 Hashtable 来存储请求链接或者请求内容中的参数名与参数值。默认情况下 Hash 算法形成的 K-V 数据结构会很分散地分布在各个桶中,如果攻击者 POST 请求的参数名所计算出来的 hash 值都是一样的话,那么这些数据将以链表的形式存放于 K-V 的数据结构中,使得 K-V 结构变为链表结构,这样的话将导致查找等操作变为线性操作。解决方案:需要应用服务器在接收 POST 请求数据时对于最大参数数量进行限制。根据 Tomcat 公布的补丁解决方案,将默认参数数量限制为 10000 个。
      

  2.   

    如果 POST 请求中大量带有 hash 值一致参数名参数的话,那将导致服务器 CPU 瞬间达到 100%,从而导致拒绝服务攻击 DoS。这种攻击不能称为 DDoS,DDoS 是分布式拒绝服务器攻击,与这个漏洞关系不大。
      

  3.   

    哦~学习了,看懂了一点。就是多个KEY都是一样的,而产生CPU 100%是吗?
      

  4.   

    应该说多个 key 算出来的 hash 值是一样的,这样的话这些 key 都会掉在一个桶中。一个 HashMap 的数据结构就会变成链表。如果有 10000 个元素的话,最坏情况下的查询效率就是 10000 * 10000 次。
      

  5.   

    原文在这里:http://www.xiuwz.com/site/news-hash-ph-java-ddos/
    对大部分WEB开发语言都有影响。