maxParameterCount 值过高的风险

问题描述 投票:0回答:1

我在 Tomcat 9 上遇到此错误

信息:检测到超过单个请求的最大请求参数数量(GET 加 POST)([10,000])。任何超出此限制的参数都将被忽略。要更改此限制,请在连接器上设置 maxParameterCount 属性。

我在这篇文章中找到了解决方案: 设置连接器上的 maxParameterCount 属性

但我的问题是:

将此参数设置为非常高的值,甚至将其设置为 0 以使其不受到限制,会存在哪些风险。

这样做有什么风险?

将此值放入 server.xml 中

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxParameterCount="300000"/> 
这样我就解决了这个问题。

tomcat tomcat8 tomcat9
1个回答
0
投票

在我看来,在 Tomcat 中提高

maxParameterCount
来解决问题似乎是一个快速解决方案,但有一些事情需要记住。首先,将其设置得太高可能会对服务器资源造成压力。更多参数意味着更多内存使用,这可能会减慢速度。

此外,还有可能引发潜在麻烦。允许每个请求使用大量参数可能会使您的应用程序成为“拒绝服务 (DoS)”攻击的目标。想象一下,攻击者用请求轰炸您的服务器,每个请求都携带大量参数。这不会是一个美丽的景象。 当然,它目前可能有效,但将来可能会出现性能问题。在单个请求中处理大量参数可能会使您的应用程序变得缓慢。我们不要忘记安全性。随意使用无限数量的参数可能会使您的应用程序面临更多安全漏洞。为了安全起见,通常最好设置合理的限制。

虽然此配置可能暂时解决了问题,但我建议您仔细研究一下为什么您的应用程序会输出如此多的参数。也许您可以进行一些调整或更改来稍微调整一下并避免从长远来看潜在的麻烦?作为将大量参数作为 URL 查询参数或表单数据传递的替代方法,请考虑在请求正文中将数据作为 JSON 负载发送。这通常更有组织性,并且允许您按层次结构构建数据。您还可以尝试使用其他分隔符(如

:

,
)来组合或减少参数数量。如果处理大型数据集,请使用分页而不是在单个请求中发送所有数据。这可以通过引入
page
pageSize
等参数来分批提交表单而不是一次性提交表单来实现。
    

© www.soinside.com 2019 - 2024. All rights reserved.