2

如何使用 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 ) 
4

1 回答 1

2

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

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

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

于 2013-09-08T21:57:32.563 回答