imt*_*tts 7 coldfusion coldfusion-9
一些背景:
我正在使用onCFCRequest()与常规CFM页面请求分开处理远程CFC调用.这允许我捕获错误并为所有远程请求干净地设置MIME类型.
问题:
我不小心设置了一些远程CFC功能,public而不是remote在远程调用时意识到它们仍在工作.
正如您在下面所看到的,我的实现onCFCRequest()为我的整个应用程序创建了一个巨大的安全漏洞,其中HTTP请求可用于public在任何HTTP可访问的CFC上调用任何方法.
REPRO CODE:
在Application.cfc中:
public any function onCFCRequest(string cfc, string method, struct args){
cfc = createObject('component', cfc);
return evaluate('cfc.#method#(argumentCollection=args)');
}
Run Code Online (Sandbox Code Playgroud)
在远程调用的CFC中:
public any function publicFunction(){
return 'Public function called remotely!';
}
Run Code Online (Sandbox Code Playgroud)
题:
我知道我可以在调用方法之前检查组件的元数据,以验证它是否允许远程访问,但还有其他方法可以解决这个问题吗?