可以使用外部代理工具篡改/修改请求范围变量吗?

时间:2018-02-15 19:03:47

标签: java security coldfusion websecurity

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

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

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

同样,有任何方法可以在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变量?

2 个答案:

答案 0 :(得分:4)

(从评论中提升这一点,以便更容易找到参考文献。)

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

  • 参数 - request.get/setParameter()

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

  • 属性 - request.get/setAttribute()

    “属性”是本地服务器变量,无法在服务器外修改。 CF的“请求”范围更类似于此。它只能在服务器上修改,AFAIK。(显然,它仍然可以是manipulated indirectly as Dan said)。

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

<强> TL; DR;

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

答案 1 :(得分: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";

一切都有时间和地点。我的大部分工作都没有使用请求范围。一个应用程序。