请求范围变量可以使用外部代理工具 tampered/modified 吗?

Can the Request scope variables be tampered/modified using external proxy tools?

我们已经知道 URL 和 FORM 范围变量可以使用外部代理工具进行修改。

例如,如果有人提出这样的请求 - http:\website\index.cfm?a=1&b=2

这样可以将值添加到 .cfm 页面的 URL 范围。

同样,有没有什么方法可以 add/alter 值来请求 ColdFusion 中的范围,而无需在代码中明确设置它。

我问这个是因为我们在一个 CFM 页面中有这样的代码。

<cfset request.uploadFileDir = application.fileDir & "\upload" />
<cffile action="upload" accept="application/pdf" destination="#REQUEST.uploadFileDir#" filefield="brochure" nameconflict="makeunique"/>

安全团队表示上述代码存在漏洞,因为 JAVA 中的 REQUEST 范围可以被外部代理工具 tampered/altered 访问。由于 ColdFusion 构建于 JAVA 之上,ColdFusion 的 REQUEST 也可以被外部代理工具篡改。这是一个正确的假设吗? JAVA 和 ColdFusion REQUEST 范围相同吗?

最后是主要问题 - 有没有办法对示例中上面提到的页面进行外部请求,修改 REQUEST 范围或更准确地说 REQUEST.uploadFileDir 变量?

(从评论中推广此内容,以便更容易找到参考资料。)

他们说 java 请求的哪一部分可以被篡改?随着 jsp/servlets, there seem to be 2 parts of the Request scope:

  • 参数 - request.get/setParameter()

    Java 的请求“参数”更像是 ColdFusion 的 URLFORM 范围,就像你说的,那些可以被客户端或外部工具修改。当他们谈论客户端篡改时,他们可能就是这么想的。

  • 属性 - request.get/setAttribute()

    “属性”是不能在服务器外修改的本地服务器变量。 CF 的“请求”范围更类似于此。只能在服务端修改,AFAIK.(当然还是可以).

如果您好奇,运行 在您的 DEV 服务器上进行一些测试 using a .jsp and .cfm script 以了解 java 的“请求”范围与 ColdFusion 的有何不同。

TL;DR;

我认为他们错了。 ColdFusion 的“请求”范围与 Java 的不同。

在 OP 的祝福下从评论中转移。

我的观点是请求范围变量只能在编程代码中定义和赋值。这意味着不能直接更改它们。但是,如果您从表单或 url 范围分配值,则可以间接更改它们。对于您的情况,请查看 REQUEST.uploadFileDir 如何接收它的值。

更多信息。

请求范围适用于页面请求中使用的任何编程文件,例如实际页面、包含文件和自定义标记,这里是一个可以更改的示例。

request.foo = url.foo;

这是一个不能的例子。

if (this is a development ColdFusion enviornment)
request.dsn = "development database";
else
request.dsn = "production database";

凡事都有时间和地点。我的大部分工作都不使用请求范围。一个应用程序可以。