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