如何使用 PHP OO 保护私有(private)类字段?我不想将私有(private)类字段 $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 代码注入(inject)您的应用程序,那么无论如何您都会遇到大问题。
OOP 中的访问修饰符是关于封装的,而不是实际的安全性。使用private
,您可以防止其他开发人员无意中访问这些字段,而不是恶意代码或潜在的攻击者。
因此,C# 中引入了 SecureString
。要在 PHP 中模拟类似的操作,您必须在 $a
中存储加密值,并将 key 保存在“安全”位置,没有人有权执行 print_r
或 var_dump
可以访问(文件,数据库)。但话又说回来,任何可以 print_r
你的对象的人都可以对 key 文件执行 file_get_contents
操作。
关于php - 如何使用 PHP OO 保护私有(private)类字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18688923/