我正在使用ColdFusion 8和jQuery 1.7.2。
我正在使用CFAJAXPROXY将数据传递给CFC。这样做会创建一个JSON数组(参数集合)并将其传递给URL。字符串可能很长,因为传递了大量数据。
我正在使用的网站具有将任何网址查询字符串的长度限制为250个字符的现有代码。这是通过测试查询字符串的长度在application.cfm文件中完成的。如果任何查询字符串大于250个字符,则请求将中止。这样做的目的是确保黑客或其他恶意代码不会通过URL字符串传递。
现在我们使用查询字符串在URL中传递JSON数组,我们发现Ajax请求经常被中止。
我们还有许多其他安全措施,例如剥离任何“<>”来自代码并使用CFQUERYPARAM的标签。
我的问题是,为了安全起见,限制URL字符串的长度是一个好主意还是仅仅是无效?
答案 0 :(得分:4)
URI长度和安全性之间绝对没有相关性,而是更多的问题:
如上所述,在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的长度来“锁定” - 但那些日子早已过去。在我仔细研究这个问题之前,我会首先看一下代表低挂水果的更多漏洞 - 除非你当然觉得你是在向探究你的人提出一个特定问题(长网址我意思是:)。