以下摘录来自一篇解释由于哈希数据结构中使用的非随机哈希函数而导致拒绝服务(DoS)攻击的可能性的文章.
[...]可以通过利用底层散列算法中的可预测冲突来利用条件.
为了验证它,我经历了Oracle的Java HashMap的参考实现,并且确实发现了一个使用的静态哈希函数:
static int hash(int h) {
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
}
Run Code Online (Sandbox Code Playgroud)
关于该主题的另一篇论文说:
Tomcat 6.0.32服务器在大约44分钟的i7 CPU时间内解析2 MB的冲突密钥串,因此大约6 kbit/s的攻击者可以使一个i7核心不断忙碌.如果攻击者有千兆连接,他可以保持大约100.000个i7核心忙
我们如何防范此漏洞.此外,对于许多软件,我们使用的是依赖于此实现的开源(Tomcat等).
我们已将 jboss 升级到 wildfly,在旧版本中,我们面临一些问题,例如帖子中传递的最大参数数。
在旧版本的 jboss 中,我们收到此错误消息
2015-02-10 20:04:34,582 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/sf].[action]] (http--
127.0.0.1-8080-38) Servlet.service() for servlet action threw exception: java.lang.IllegalStateException: More than the
maximum number of request parameters (GET plus POST) for a single request ([5,000]) were detected. Any parameters beyond
this limit have been ignored. To change this limit, set the maxParameterCount attribute on the Connector.
at org.apache.tomcat.util.http.Parameters.addParameter(Parameters.java:199) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:382) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:229) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.Request.parseParameters(Request.java:2874) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.Request.getParameterNames(Request.java:1333) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.RequestFacade.getParameterNames(RequestFacade.java:379) [jbossweb-7.0.13.Final.jar:]
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1225) [struts.jar:1.1] …Run Code Online (Sandbox Code Playgroud) 我最近升级了我的申请.我的应用程序使用Java Web API,servlet和jsp.我在新版本中提出了从Java 7到Java 8的转换.
我的服务器现在使用Wildfly10平台,它使用Java 8.以前是Jboss 7,它使用Java 7.
在我的应用程序的早期版本中,当我在特定页面添加+ - 300个属性时,我的应用程序崩溃,这使得我的请求网址很长.但在我的新版本中,如果不对特定代码进行更改,它就不再是问题了.
Java 7和Java 8中请求URL的大小限制是否存在差异?