尝试处理hash攻击的filter
1. 背景
去年底爆出来的hash攻击,其基本原理就是在一个请求中构造大量hash值相同的请求参数,导致服务容器在处理的时候hash操作变为链表操作,从而造成服务器load很高甚至瘫痪。
类似请求可以为:
String s= "POST /test2/b2.do?arg=1&a=22 HTTP/1.1\nAccept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\nReferer: http://127.0.0.1:8080/test2/b2.do?arg=1&a=22\nAccept-Language: zh-cn\nContent-Type: application/x-www-form-urlencoded\nUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/16.0.912.77; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)\nAccept-Encoding: gzip, deflate\nHost: 127.0.0.1:8080\nContent-Length: 18\nConnection: Keep-Alive\nCache-Control: no-cache\n\nfname=abc&lname=1";