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)
安全团队表示上述代码容易受到攻击,因为REQUEST
JAVA中的范围可能被外部代理工具篡改/更改.由于ColdFusion是基于JAVA构建的,因此ColdFusion REQUEST
也可能被外部代理工具篡改.这是正确的假设吗?JAVA和ColdFusion REQUEST
范围相同吗?
最后一个主要问题 - 是否有任何方式对示例中上面提到的页面进行外部请求,修改REQUEST
范围或更精确的REQUEST.uploadFileDir
变量?
(通过注释来促进这一点,以便更容易找到参考。)
他们说Java要求的哪一部分可以被篡改?用JSP / servlet的,似乎有2份的Request
范围:
参数 -request.get/setParameter()
Java的请求“参数”更像ColdFusion的URL
和FORM
作用域,就像您说的那样,可以由客户端或外部工具修改。当谈论客户篡改时,这可能就是他们的想法。
属性 -request.get/setAttribute()
“属性”是本地服务器变量,无法在服务器外部进行修改。CF的“请求”范围与此类似。它只能在服务器AFAIK上进行修改。(显然,它仍然可以像Dan所说的那样间接地被操纵)。
如果您感到好奇,请使用.jsp和.cfm脚本在DEV服务器上运行一些测试,以查看Java的“请求”范围与ColdFusion的区别。
TL; DR;
我认为他们错了。ColdFusion的“请求”范围与Java的范围不同。
在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)
凡事都有时间和地点。我的大部分工作不使用请求范围。一个应用程序就可以。