如何使用 PHP OO 保护私有类字段


How to secure private class field with PHP OO?

如何使用 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 ,您可以防止其他开发人员无意中访问字段,而不是恶意代码或潜在攻击者。

因此,SecureString是在 C# 中引入的。要在PHP中模拟这样的东西,你必须在$a中存储一个加密值,并将密钥保存在一个"安全"的位置,没有人有权执行print_rvar_dump可以访问(文件,DB)。但话又说回来,任何可以print_r你的对象的人,都可能对密钥文件执行file_get_contents