具有可以改变的预构建查询的类是主要的已知方法;但是说大约有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连接是一个安全问题,那怎么回事?由于用户无法看到代码。
提前致谢。
答案 0 :(得分:3)
在全球范围内建立联系'范围可以被截取'
嗯,不,那完全是下铺。变量范围只是帮助您以可维护和理智的方式组织代码的东西。 这不是任何想象力的安全措施。如果有人,任何人,可以"拦截"服务器上的全局变量,然后它们可以拦截所有种类的变量和服务器的内存内容。因为这意味着他们会在你的服务器上 。如果攻击者已经在那里,你无论如何都会死在水中。
全局变量不再是来自外部"你的服务器(你的普通攻击者可能会驻留在那里),而不是任何其他类型的变量。
请注意,对全局变量仍有Maurice Gavin,但 security 不是其中之一。