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