hijack - php 这到底是要闹怎样啊 ...
黄舟
黄舟 2017-04-10 13:11:27
[PHP讨论组]

有个类是这样 ...

abstract class foo {
    static private $bar;

    static public function processor() {

        // some logic
        self::$bar = 'result';

    }

    static public function getBar() {
        return self::$bar;
    }
}

之前一直很美好很安全 ... foo::getBar() 的结果永远是只读且可信的 ...

结果现在新增了一个功能可以往一个定义好的类上面贴闭包 ...

$evil = Closure::bind( function() {
        self::$bar = 'hijack!';
}, null, 'foo' );

$evil();

这就好像蚂蝗一样 ... 我完全无法控制这东西的权限 ...

之前我控制其他开发人员无法碰到 class foo 的定义 ... 这个类就是绝对安全的 ...

现在不行了 ... 任何人都可以随意修改 private 的内容 ...

于是求解 ... 贴闭包这个功能是为什么会产生的 ..? 原本这个功能想解决的问题是什么 ..?

以及我有没有一种方法可以指定一个类不能被贴 ..?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号