是否应限制URL字符串的长度以增加安全性?

时间:2012-04-19 15:42:14

标签: ajax coldfusion coldfusion-8 cfc cfajaxproxy

我正在使用ColdFusion 8和jQuery 1.7.2。

我正在使用CFAJAXPROXY将数据传递给CFC。这样做会创建一个JSON数组(参数集合)并将其传递给URL。字符串可能很长,因为传递了大量数据。

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

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

我们还有许多其他安全措施,例如剥离任何“<>”来自代码并使用CFQUERYPARAM的标签。

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

4 个答案:

答案 0 :(得分:4)

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

  1. 将您提供给用户代理的信息量限制为“需要知道的基础”。这包括诸如您运行的应用程序服务器类型和关联约定,您运行的Web服务器以及关联约定以及主机上的操作系统等内容。这些本质上是可以被视为漏洞的东西。
  2. 减少利用这些漏洞的影响,即引入补丁,确保正确配置等。
  3. 如上所述,在Web层,这不仅包括GET(您的关注),还包括POST,PUT,DELETE几乎关于HTTP资源上的任何其他操作。

答案 1 :(得分:2)

将此移至Evik的答案 -

如果输入被正确消毒,那似乎(充其量)完全没有必要。我敢肯定有人聪明可以迅速击败“小门口安全”防守,假设这是唯一的防守。

OWASP对网络安全有一些很好的,理智的指导方针。据我所知,限制网址的大小不在列表中。有关详细信息,请参阅:https://www.owasp.org/index.php/Top_10_2010-Main

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

答案 2 :(得分:1)

我不是ColdFusion开发人员。但我认为它与其他语言相同。

我认为这只是一点帮助。应用程序应该处理恶意代码或SQL注入的问题。

我同意查询字符串值的有限长度更安全,并且增加了黑客的难度。但你不能用POST数据做到这一点。它限制了一些功能。例如, 对于一个utf-8字符,编码后可能需要9个字符。这意味着你只能放27个非英文字符。

答案 3 :(得分:1)

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

因此,这里存在一些适度的风险。回到NT时代,IIS 3有许多缺陷,通过限制URL的长度来“锁定” - 但那些日子早已过去。在我仔细研究这个问题之前,我会首先看一下代表低挂水果的更多漏洞 - 除非你当然觉得你是在向探究你的人提出一个特定问题(长网址我意思是:)。