Hash碰撞的拒绝式服务攻击(HASH COLLISION DOS)

原文地址:http://coolshell.cn/articles/6424.html 这个安全弱点利用了各语言的Hash算法的“非随机性”可以制造出N多的value不一样,但是key一样数据,然后让你的Hash表成为一张单向链表,而导致你的整个网站或是程序的运行性能以级数下降(可以很轻松的让你的CPU升到100%)。

在Java里, Aa和BB这两个字符串的hash code(或hash key) 是一样的,也就是Collision ;我们就可以通过这两个种子生成更多的拥有同一个hash key的字符串。如:”AaAa”, “AaBB”, “BBAa”, “BBBB”。这是第一次迭代。其实就是一个排列组合,写个程序就搞定了。

要防守这样的攻击,有下面几个招:

  • 打补丁,把hash算法改了。
  • 限制POST的参数个数,限制POST的请求长度。
  • 最好还有防火墙检测异常的请求。
  • 不过,对于更底层的或是其它形式的攻击,可能就有点麻烦了。