PDO实例安全性

时间:2016-04-05 08:29:20

标签: php pdo

具有可以改变的预构建查询的类是主要的已知方法;但是说大约有80个表,每个表都有数千行数据,写入每个查询都需要很长时间......

我想了解为什么在主要范围内建立开放连接实际上是一个安全问题 - 他们怎么能拦截"它?

以例如:

// Main index page
$db = new PDO('mysql:host=x;dbname=x;','user','pass');

这会是一种威胁吗?如果是这样的话? (因为它从未恢复为null)

或者这是否是一种更安全的方法,因为实例永远不会保存?

final class DataCenter
{
    public static function GetInstance()
    {
        return new PDO('mysql:host=x;dbname=x;','x','x');
    }
}

$smpt = DataCenter::GetInstance()
        ->Prepare("SELECT * FROM x");
$smpt->Execute();
$smpt->FetchAll();
print_r($smpt);

如果这令人困惑,我道歉 - 我只是想知道:如果实例化一个永不消亡或恢复为null的PDO连接是一个安全问题,那怎么回事?由于用户无法看到代码。

提前致谢。

1 个答案:

答案 0 :(得分:3)

  

在全球范围内建立联系'范围可以被截取'

嗯,不,那完全是下铺。变量范围只是帮助您以可维护和理智的方式组织代码的东西。 这不是任何想象力的安全措施。如果有人,任何人,可以"拦截"服务器上的全局变量,然后它们可以拦截所有种类的变量和服务器的内存内容。因为这意味着他们会在你的服务器上 。如果攻击者已经在那里,你无论如何都会死在水中。

全局变量不再是来自外部"你的服务器(你的普通攻击者可能会驻留在那里),而不是任何其他类型的变量。

请注意,对全局变量仍有Maurice Gavin,但 security 不是其中之一。