3

我正在使用 ColdFusion 8 和 jQuery 1.7.2。

我正在使用 CFAJAXPROXY 将数据传递给 CFC。这样做会创建一个 JSON 数组(参数集合)并通过 URL 传递它。字符串可能很长,因为正在传递相当多的数据。

我正在工作的站点具有将任何 URL 查询字符串的长度限制为 250 个字符的现有代码。这是在 application.cfm 文件中通过测试查询字符串的长度来完成的。如果任何查询字符串大于 250 个字符,则请求被中止。这样做的目的是确保黑客或其他恶意代码不会通过 URL 字符串传递。

现在我们使用查询字符串在 URL 中传递 JSON 数组,我们发现 Ajax 请求经常被中止。

我们还有许多其他安全实践,例如从代码中剥离任何“<>”标签并使用 CFQUERYPARAM。

我的问题是为了安全起见限制 URL 字符串的长度是一个好主意还是根本无效?

4

4 回答 4

4

URI 长度和安全性之间绝对没有相关性,更多的是一个问题:

  1. 将您提供给用户代理的信息量限制为“需要知道的基础”。这涵盖了诸如您运行的应用程序服务器的类型和相关的约定、您运行的 Web 服务器和相关的约定以及主机上的操作系统等内容。这些本质上是可以被视为漏洞的东西。
  2. 减少利用这些漏洞的影响,即引入补丁、确保正确配置等。

正如上面提到的,在 Web 层,这不仅包括 GET(您所关心的),还包括 POST、PUT、DELETE 对 HTTP 资源的任何其他操作。

于 2012-04-19T16:50:34.380 回答
2

将此移至 Evik 的答案中-

如果输入得到适当的清理,这似乎(充其量)完全没有必要。我敢肯定,假设这是唯一的防御,聪明的人可以迅速击败“小门口的安全”防御。

OWASP 有一些好的、健全的网络安全指南。据我所知,限制 url 的大小不在列表中。有关详细信息,请参阅:https ://www.owasp.org/index.php/Top_10_2010-Main

我还想回应 Hereblur 的评论,即这使国际化变得棘手,或者可能是不可能的。

于 2012-04-19T16:52:39.170 回答
1

I'm not a ColdFusion developer. But I think it's the same with other language.

I think It's help just a little bit. The problem of malicious code or sql injection should be handle by your application.

I agree that limited length of query string value is safer and add more difficult to hackers. But you cant do this with POST data. and It's limit some functionality. For example, For one utf-8 character, It may take 9 characters after encoded. that's mean you can put only 27 non-english characters.

于 2012-04-19T16:09:59.430 回答
1

限制的唯一原因与性能和 DOS 攻击有关 - 而不是安全本身(尽管 DOS 通过关闭您的服务器是一种安全威胁)。Web 服务器和应用服务器(包括 CF)允许您限制 POST 数据的大小,以便您的服务器不会因上传非常大的文件而降级。如果服务器难以解析、处理或写入或其他任何内容,则 URL 数据(如果大量)可能会导致长时间运行的请求。

所以这里有一些与这些事情相关的适度风险。早在 NT 时代,IIS 3 就有许多缺陷,这些缺陷通过限制 URL 的长度而被“锁定”——但那些日子早已一去不复返了。在仔细研究这个问题之前,我会首先查看更多代表低效成果的漏洞利用- 当然,除非您觉得您遇到了一个特定问题,而人们正在调查您(我的意思是使用长 URL :)。

于 2012-04-19T19:47:58.880 回答