5

我们在网络应用的管理部分遇到了一些表单问题。有一些表单包含大量字段(范围可以从一个输入字段到数百个)。

我们发现,随着这些表单的增长,在发布表单时服务器会抛出 500 个错误。

运行测试后,我发现服务器可以处理包含 100 个字段的表单;一旦使用了 101 个或更多字段,我们就会得到错误。

我们运行 Coldfusion,我们确定 Coldfusion 没有抛出此错误。我们从未在 Coldfusion 中看到此错误记录,因此我们假设 IIS 甚至在将请求发送到 Coldfusion 服务器之前就抛出了错误。

我假设在 IIS 7.5 中有一些设置可以提高这个限制。我在网上搜索过,但我能找到的只是如何提高此数据的字节大小限制,而不是对允许的多个字段的任何限制。

那么,我是否正确地假设这可以改变,如果可以,怎么做?

4

2 回答 2

13

这是修补程序 APSB12-06 引入的问题。虽然这是一个 ColdFusion 错误,但人们报告说在 Tomcat 中收到了该错误,然后才据称它击中了 CF 服务器

有一个设置neo-runtime.xml定义了postsizelimit- 并且默认为 100。

完整的笔记在这里,但这里是简短的版本。

此热修复在 ColdFusion 中有一个新设置,即 Post Parameter Limit。此设置限制发布请求中的参数数量。默认值为 100。如果 post 请求包含更多指定的参数,则服务器不处理该请求并引发异常。此过程使用 Hash Collision 防止 DoS 攻击。此设置不同于帖子大小限制(ColdFusion 管理员 > 设置 > 帖子数据的最大大小)。此设置未在 ColdFusion 管理员控制台中公开。但是您可以在 neo-runtime.xml 文件中轻松更改此限制。见下文第 5 点。想要更改 postParameterLimit 的客户,请转到 {ColdFusion-Home}/lib 进行服务器安装或 {ColdFusion-Home}/WEB-INF/cfusion/lib 进行多服务器或 J2EE 安装。在行之后打开文件 neo-runtime.xml。

<var name='postSizeLimit'><number>100.0</number></var>

添加下面的行,您可以将 100 更改为所需的数字。

<var name='postParametersLimit'><number>100.0</number></var>

CF10+ 具有可在 CF 管理员设置页面下编辑的Maximum number of POST request parameters设置Server Settings -> Settings

在我们的 9.0.1 服务器上,我们只是将设置增加到 10000,并且没有看到任何不利影响。

于 2013-02-14T19:55:05.020 回答
6

我相信您遇到了 ColdFusion 的安全功能。您正在运行什么 ColdFusion 版本?在ColdFusion 安全修补程序 APSB12-06 中,他们引入了一个修复程序来防止使用哈希冲突的 DoS 攻击。从该页面:

此修补程序在 ColdFusion 中实现了一个新设置,即后参数限制。这限制了发布请求中的参数数量。默认值为 100。如果一个 post 请求包含更多指定的参数,服务器将不会处理该请求并抛出异常。这样做是为了防止使用 Hash Collision 的 DoS 攻击。此设置不同于帖子大小限制(ColdFusion 管理员 > 设置 > 帖子数据的最大大小)。我们不会在 ColdFusion 管理员控制台中公开此设置,但可以在 neo-runtime.xml 文件中轻松更改此限制。见下文第 5 点。

该页面上还有关于如何增加该限制的说明。基本上,您必须对 neo-runtime.xml 文件进行更改。

想要更改 postParameterLimit 的客户,请转到 {ColdFusion-Home}/lib服务器安装或多服务器 {ColdFusion-Home}/WEB-INF/cfusion/lib或 J2EE 安装。打开文件 neo-runtime.xml,行后:

<var name='postSizeLimit'><number>100.0</number></var>

添加以下行,您可以将 100 更改为所需的数字。

<var name='postParametersLimit'><number>100.0</number></var>
于 2013-02-14T19:58:32.207 回答