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

Pan*_*kaj 5 java security coldfusion websecurity

我们已经知道可以使用外部代理工具修改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"/>
Run Code Online (Sandbox Code Playgroud)

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

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

Age*_*eax 5

(通过注释来促进这一点,以便更容易找到参考。)

他们说Java要求的哪一部分可以被篡改?用JSP / servlet的,似乎有2份的Request范围

  • 参数 -request.get/setParameter()

    Java的请求“参数”更像ColdFusion的URLFORM作用域,就像您说的那样,可以由客户端或外部工具修改。当谈论客户篡改时,这可能就是他们的想法。

  • 属性 -request.get/setAttribute()

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

如果您感到好奇,请使用.jsp和.cfm脚本在DEV服务器上运行一些测试,以查看Java的“请求”范围与ColdFusion的区别。

TL; DR;

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


Dan*_*cuk 3

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

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

更多信息。

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

request.foo = url.foo;
Run Code Online (Sandbox Code Playgroud)

这是一个不能的例子。

if (this is a development ColdFusion enviornment)
request.dsn = "development database";
else
request.dsn = "production database";
Run Code Online (Sandbox Code Playgroud)

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