【问题标题】:How to secure private class field with PHP OO? [duplicate]如何使用 PHP OO 保护私有类字段? [复制]
【发布时间】:2013-09-12 09:25:15
【问题描述】:

如何使用 PHP OO 保护私有类字段?我不想公开私有类字段 $a,但是当我这样做时:

class Hidden {
   private $a = 'Very important, hidden variable';
   protected $b = 'secret';
}
$obj = new Hidden();
$c = (array)$obj;
print_r($c);

$a 可供所有人使用:

Array ( [Hiddena] => Very important, hidden variable [*b] => secret ) 

【问题讨论】:

    标签: php oop private


    【解决方案1】:

    也许您可以详细说明您的担忧,并举例说明攻击者可以在您的特定情况下利用此条件的情况,因为如果有人能够将 PHP 代码注入您的应用程序,那么无论如何您都会遇到大问题。

    OOP 中的访问修饰符是关于封装的,而不是实际的安全性。使用private,您可以防止其他开发人员无意中访问这些字段,而不是恶意代码或潜在的攻击者。

    出于这个原因,SecureString 在 C# 中被引入。要在 PHP 中模拟这样的事情,您必须在 $a 中存储一个加密值并将密钥保存在一个“安全”的位置,没有人有权执行 print_rvar_dump 可以访问(文件, D B)。但是话又说回来,任何可以print_r 你的对象的人都可以在密钥文件上做file_get_contents

    【讨论】:

    • 感谢您的解释。那么,如何编写 api,以向 api 的使用者隐藏某些信息呢?
    • 这是什么API?哪个字段值如此机密以至于您图书馆的用户不应该看到它?
    猜你喜欢
    • 2017-01-25
    • 2013-10-18
    • 2020-11-15
    • 2016-07-19
    • 2017-08-22
    • 2017-06-29
    • 2018-08-21
    • 1970-01-01
    • 2019-07-24
    相关资源
    最近更新 更多