http - 通过 HTTP POST 发送哪些特定数据可能会导致 HTTP 504 错误?

标签 http iis coldfusion

我有一个网站使用订单输入表单,并在提交表单时发送一个大小适中的 POST 请求。

但是,当在我们的表单变量之一(OrderDetail)中传递特定值时,每次都会在浏览器中出现错误页面并通过 Fiddler 出现 504 错误。

以下是我昨晚运行的几个通过 Fiddler 发送 POST 请求的测试示例。当 "OrderDetail="值更改为以下时,它将提交成功或在几秒钟后返回 504 错误:

这些失败了:

  • &OrderDetail=Deliver+Writ+of+Execution%3B+and+Application+for+Earnings+Withholding+Order+to+Los+Angeles+County+Sheriff+DASH+Court+Services+Division+per+instructions<
  • &OrderDetail=Deliver+Execution+Earnings+Withholding+Order+to+Los+Angeles+County+Sheriff+DASH+Court+Services+Division+per+instructions
  • &OrderDetail=Deliver+Writ+of+Execution%3B+and+Application+for+Earnings+Withholding+Order+to+Los+Angeles+County+Sheriff
  • &OrderDetail=Deliver+Writ+of+Execution%3B+Application+for+Earnings+Withholding+Order+to+Los+Angeles+County+Sheriff
  • &OrderDetail=Writ+of+Withholding+Execution+Order+Los+Angeles+County+Sheriff
  • &OrderDetail=writ+Execution+adsfsdfsdfsd+Order+County
  • &OrderDetail=wd+Execution+adsfsdfsdfsd+Order+Count

这让我想到它可能与“Exec”('Exec' 和 'Execution' 抛出错误,'Exe' 不会)和“Count<”这两个词有关/strong>”('County' 和 'Count' 会抛出错误,'Cont' 不会)

但是,我在谷歌搜索中没有看到任何关于 504 错误的具体内容。

关于围绕此的 Coldfusion 代码,此页面没有什么特别之处。只是一个标准的表格帖子。我在应用程序文件中添加了一个 cfmail 测试,并且在这些失败时它从未运行过,所以这似乎是在浏览器和 IIS 之间。我们在共享服务器上,所以我看不到太多内容。

奇怪的是,当 &OrderDetail= 参数更改为这些值之一(与上面非常相似)时,结果是成功的:

  • &OrderDetail=wd+Execution+adsfsdfsdfsd+Order+Coun
  • &OrderDetail=wd+Execution+adsfsdfsdfsd+Order+Conty
  • &OrderDetail=Writ+of+Withholding+Order+Execution+Los+Angeles+County+Sheriff
  • &OrderDetail=Writ+of+Withholding+ExecutionOrder+Los+Angeles+County+Sheriff

在第 3 个中,我在“执行”之前放置了“订单”并且它有效..

这个POST请求的总长度大约是4720个字符。我已将这一字段的长度增加到其长度的 5-6 倍并且它们通过了,因此它似乎与 POST 中的“&OrderDetail”参数的值有关。

关于为什么这个特定数据可能成为网络服务器问题的任何想法?我以前从未见过这种情况,对于几乎所有其他请求而言,它不会继续成为问题。

还有一个有趣的注意事项:在 POST 请求中,此变量非常接近参数列表的开头。如果我删除它之后的所有内容,那就没问题了。尽管我无法确定后续行中可能导致它的原因。如果有帮助,我可以发布整个请求。

但更重要的是,我只想知道对于 FORM 数据,什么可以称为“保留”或“非法”。一切似乎都被正确转义,所以我不确定除了一些预处理 javascript 以进一步转义任何此类单词之外还能在这里做什么。

谢谢!

最佳答案

鉴于 EXECCOUNT 导致错误,而将 ORDER 放在 EXEC 之前可以防止错误,这听起来像是在尝试防止 SQL 注入(inject)攻击的错误尝试。

如果您有任何声称可以做到这一点的软件,我会看看(暂时)禁用它是否可以阻止问题的发生。
(此软件可能处于防火墙级别,因此您可能需要与系统管理员联系。)


重要的是,我还会检查您的代码库以了解使用 OrderDetail 的位置,并确保它在查询中使用时使用 cfqueryparam - 所有其他用户提供的数据也是如此。

关于http - 通过 HTTP POST 发送哪些特定数据可能会导致 HTTP 504 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7629028/

相关文章:

Java URL - Google 翻译请求返回 403 错误?

javascript - 解决矛盾的 Cache-Control header

c# - 如何判断 IIS 何时在 ASP.NET 中应用 "Default Page"设置 (C#)

asp.net - 将查询字符串附加到 IIS 重写映射

function - Coldfusion 检查函数是否存在

Python:需要附加额外的 header ,在 urllib2 添加隐藏默认值之后,在发送请求之前

http - 如何正确覆盖 Firefox Web 扩展中的 Content-Type header ?

c# - 如何利用 IIS 应用程序池中的空闲 CPU 时间?

javascript - ColdFusion 内置 AJAX 与 JQuery 或 ExtJS

coldfusion - Railo PDF 生成问题