如何使用PHP OO保护私有类字段?我不想让私人课堂领域成为一个公共场所,但是当我做这样的事情时:
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 )
答案 0 :(得分:2)
也许您可以详细说明您的问题并举例说明攻击者可以在您的特定情况下利用此条件的情况,因为如果有人能够将PHP代码注入您的应用程序,那么无论如何您都会遇到大问题。 / p>
OOP中的访问修饰符是关于封装,而不是实际的安全性。使用private
,可以防止其他开发人员无意中访问这些字段,而不是恶意代码或潜在的攻击者。
出于这个原因,在{C#中引入了SecureString
。要在PHP中模拟这样的内容,您必须在$a
中存储加密值并将密钥保存在“安全”位置,没有人有权执行print_r
或{{1可以访问(文件,数据库)。但话说回来,任何可以var_dump
你的对象的人都可能在密钥文件上print_r
。