【发布时间】:2011-10-24 23:13:18
【问题描述】:
举个例子:
class Database
{
private $host,
$database,
$username,
$password,
$type;
public $active_connection;
//Some methods
}
class Page
{
private $db;
public function __construct($id)
{
// Some code
$this->db = new Database($id);
}
//Some Methods
}
$page = new Page(0);
var_dump($page);
这将输出数据库对象的私有变量,即使它们被标记为私有(因此,据我了解,外部世界无法使用)。
我的问题是:
- 这是安全风险吗?
- 有没有办法有效地隐藏那些标记为私有的变量?
提前致谢
编辑: 在这个项目中,管理部分将提供创建自定义 PHP 脚本以作为部分合并到站点中的功能。由于这是针对第三方实体开发的,我担心的是,出于某种原因,客户无意中转储了 $page 对象(在我们的代码中,它是主要的可修改对象)以“探索”它。
【问题讨论】:
-
属性可见性不是安全功能。而
var_dump恰好是一个调试函数。