5

正如我们已经知道的,可以使用外部代理工具修改 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"/>

安全团队说上述代码很容易受到攻击,因为REQUESTJAVA 中的范围可以被外部代理工具篡改/更改。由于 ColdFusion 是基于 JAVA 构建的,ColdFusionREQUEST也可以被外部代理工具篡改。这是一个正确的假设吗?JAVA 和 ColdFusionREQUEST范围相同吗?

最后是主要问题 - 是否有任何方式对示例中上述页面的外部请求,修改REQUEST范围或更精确的REQUEST.uploadFileDir变量?

4

2 回答 2

5

(从评论中宣传这一点,以便更容易找到参考。)

他们说java请求的哪一部分可以被篡改?使用 jsp/servlets,范围似乎有 2 个部分Request

  • 参数-request.get/setParameter()

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

  • 属性 -request.get/setAttribute()

    “属性”是不能在服务器外部修改的本地服务器变量。CF 的“请求”范围更类似于此。它只能在服务器上修改,AFAIK。(显然,它仍然可以像 Dan 所说的那样被间接操纵)。

如果您好奇,可以使用 .jsp 和 .cfm 脚本在您的 DEV 服务器上运行一些测试,以了解 java 的“请求”范围与 ColdFusion 的不同。

TL;博士;

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

于 2018-02-15T22:12:29.633 回答
3

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

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

更多信息。

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

request.foo = url.foo;

这是一个不能的例子。

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

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

于 2018-02-16T03:14:09.507 回答