我的数据库连接的全局是否存在安全风险


Is a global of my db connection a security risk?

可能重复:
数据库连接是全局连接还是Singleton连接?

我已经注册了globals off。我连接到我的数据库并将其保存在$db中。在一个函数中,我声明它是全局的。我知道这使我的变量成为全局变量,所以即使在函数返回后,我也可以使用$GLOBALS访问它。

我刚才是不是把我的关系暴露在了安全威胁之下?我需要每次都将其作为参数传递吗?

从设计角度来看,有比全局连接更好的做法,但我看不到任何安全威胁。

更好的做法是创建一个php包含文件,该文件使用以下内容:

// this is the address to the mySQL host
// all queries will utilize this variable for connection so changing can
// be done in one stop fashion
// the following defines
define('DB_HOST', '127.0.0.1');
define('DB_USER', 'a_username');
define('DB_PASSWORD', 'thepassword');
define('DB_DBASE', 'databasename');

然后创建一个函数,尝试打开数据库链接,如果成功,则返回链接。然后,您可以使用include((在整个代码中调用这个函数,而不必处理全局变量或将它们作为实际变量等。

R

通常不会。有时db对象是一个"星形对象",用作Singleton。