正如我们所知,可以使用外部代理工具修改 URL 和 FORM 范围变量。
例如,如果有人发出这样的请求 - http:\\website\index.cfm?a=1&b=2
通过这种方式,可以将值添加到 .cfm
页面的 URL 范围。
同样,有没有办法在 ColdFusion 中添加/更改请求范围的值,而无需在代码中明确设置。
我问这个是因为我们在一个 CFM 页面中有这样的代码。
<cfset request.uploadFileDir = application.fileDir & "\upload" />
<cffile action="upload" accept="application/pdf" destination="#REQUEST.uploadFileDir#" filefield="brochure" nameconflict="makeunique"/>
安全团队表示上述代码存在漏洞,因为 JAVA 中的 REQUEST
作用域可以被外部代理工具篡改/更改。而且由于 ColdFusion 是基于 JAVA 构建的,因此 ColdFusion 的 REQUEST
也可以被外部代理工具篡改。这是一个正确的假设吗? JAVA 和 ColdFusion REQUEST
范围是否相同?
最后是主要问题 - 是否有任何方法可以对示例中上面提到的页面进行外部请求,修改 REQUEST
范围或更准确地说是 REQUEST.uploadFileDir
变量?
最佳答案
(从评论中推广这一点,以便更容易找到引用。)
他们说 java 请求的哪一部分可以被篡改?使用 jsp/servlet,there seem to be 2 parts of the Request
scope :
参数 -
request.get/setParameter()
Java 的请求“参数”更像是 ColdFusion 的
URL
和FORM
范围,就像你说的,那些可以被客户端或外部工具修改。当他们谈论客户端篡改时,他们可能就是这么想的。属性 -
request.get/setAttribute()
“属性”是不能在服务器外修改的本地服务器变量。 CF 的“请求”范围更类似于此。它只能在服务器上修改,AFAIK。(显然,它仍然可以是 manipulated indirectly as Dan said)。
如果您好奇,请在您的 DEV 服务器上运行一些测试 using a .jsp and .cfm script查看 java 的“请求”范围与 ColdFusion 的有何不同。
TL;DR;
我认为他们错了。 ColdFusion 的“请求”范围与 Java 的不同。
关于java - 是否可以使用外部代理工具篡改/修改请求范围变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48814517/