如何使用应用程序保护连接字符串?

Dav*_*vuz 6 php mysql connection-string password-protection yii

我正在与我的朋友在共享主机上托管Yii应用程序,并将数据库保存在私有MySQL服务器中.如您所知,protected\config\main.php其他主机所有者(我的朋友等)可以很容易地找到数据库信息:

'db'=>array(
     'connectionString' => 'mysql:host=211.113.2.45;dbname=FamilyBook',
     'emulatePrepare' => true,
     'username' => root,
     'password' => 'xcute445',
     'charset' => 'utf8',
),
Run Code Online (Sandbox Code Playgroud)

是否有任何解决方案可以将连接信息隐藏为IP mySQL服务器,用户名和密码?

可以MySQL服务器提供RSA机制来保护数据库信息吗?

例如,任何人都可以看到如下但无法理解或使用:

'db'=>array(
     'connectionString' => '57bf064b2166366a5ea61109006b8d5c',
     'emulatePrepare' => true,
     'username' => '63a9f0ea7bb98050796b649e85481845',
     'password' => 'e04ccf211208f8c97e4a36e584926e60',
     'charset' => 'utf8',
), // value by MD5 function, example only
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 6

不,只要您使用本机MySql身份验证,就无法隐藏有权访问您的源的人员的凭据.那是因为您的代码需要将凭证作为明文¹传递给服务器,因此它需要能够在连接之前"解密"它们.有权访问您的源的人可以遵循相同的过程并解密它们.

您可以依靠某种类型的PAM身份验证而不是用户提供的凭据来保护您的系统,但Yii不支持此类身份验证.


¹note:事实并非如此.客户端将哈希传递给服务器,但它需要访问原始密码才能对其进行哈希处理.这意味着,对于本次讨论而言,它没有任何区别(对于正在网络上收听的人来说,这会有所不同).