小编imt*_*tts的帖子

实现onCFCRequest()时,公共函数可以远程访问

一些背景:

我正在使用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)

题:

我知道我可以在调用方法之前检查组件的元数据,以验证它是否允许远程访问,但还有其他方法可以解决这个问题吗?

coldfusion coldfusion-9

7
推荐指数
1
解决办法
649
查看次数

标签 统计

coldfusion ×1

coldfusion-9 ×1