php - 如何使用 PHP OO 保护私有(private)类字段?

标签 php oop private

如何使用 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_rvar_dump 可以访问(文件,数据库)。但话又说回来,任何可以 print_r 你的对象的人都可以对 key 文件执行 file_get_contents 操作。

关于php - 如何使用 PHP OO 保护私有(private)类字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18688923/

相关文章:

java - 创建表单来更改永久变量

php - 使用 jQuery 通过单击按钮隐藏 "li"标记

java - 仅比较两个实例之间的一个变量

c# - 提供重定向层的 C# 类的命名约定

module - 跨多个文件/模块拆分实现并尽可能保持所有内容的私密性

php - 将用户重定向到登录页面,而不在 Facebook 页面上使用 fbml

php - 是否有用于 PHP 的词形还原器?

python - 将类的实例存储在类变量中是一个好的模式

java - 对私有(private)列表问题的迭代

java - 子类是否继承私有(private)字段?