hash collision攻击的延续

前段时间的hash collision导致拒绝服务的攻击,各种WEB容器都进行了修补。

GET方法因为客房端和服务端本身的实现基本可以限制URL的长度而不至于产生大量key-value。

大多数http服务器和WEB容器都是判断POST数据中参数个数,如x-www-form-urlencoded时判断&的个数,multipart时判断boundary的个数,超过一定个数即认为是攻击。

但是只要应用端使用map(特别是类似java的HashMap实现)作为底层数据存储的都会被攻击,比如一个大量相同hashcode组成key的json文本被转换为JSONObject时,

底层被将这些key存入HashMap,你无法根据字符串特征过虑JSON文本,结果还是绕过http服务器或者WEB容器而攻击成功。

所以实现一个不可推导的hash算法代替现有的hashMap,是解决这个问题最可靠的方案。

对于一个实例MyHashMap产生一个随机的值,在实例生命周期内值是固定的,而对不同实例这个值又是随机的。这个值参与到hash算法中,可以防止根据源码分析

而产生相同hash值,这一步必不可少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值