MySQL数据库命名

时间:2012-09-22 14:44:40

标签: php mysql

这可能是一个愚蠢的问题,但我真的没有在网上找到答案。多年来,我总是将一个新的mysql数据库命名为一些神秘的东西。通常每个站点只有一个数据库,使用一个神秘的命名实践 - “x7s9u3or8wj”并不是很难。我总是担心安全性,但从来没有任何具体的数据表明必须以神秘的方式命名数据库。

现在我正在构建一个需要多个数据库的网站。使用神秘的命名会比使用_users _content _common这样的命名方案更难。

用常用词命名我的数据库是否存在安全风险?我的用户名和密码总是神秘而且安全。

谢谢!

3 个答案:

答案 0 :(得分:5)

使用有意义的名称命名数据库。隐藏名称不会解决您可能遇到的任何安全问题,也不会使代码不易受SQL注入攻击。一旦我可以注入你的SQL调用,我就可以找到你的数据库名称,无论你做多么愚蠢。

使用非常广泛传播的CMS系统的人有时会重命名DMS和表来尝试混淆尝试着名漏洞的抓取工具,但这不会成为您的一次性系统的问题。

答案 1 :(得分:0)

以密码方式命名您的数据库只能通过模糊处理来增加安全性,并且因为这不是一个可靠的安全功能,所以它没有多大帮助。

无论如何,正如Ray所说,如果你的代码有任何可能授予你访问数据库的漏洞,那么数据库名称'仍然是已知的。

您的安全度量仅适用于您与其他用户共享MySQL服务器的地方,并且您不希望他们知道您在那里存储的内容。

使用安全密码非常好。

请注意,您的脚本将以明文形式存储数据库密码。 因此,如果您与其他用户共享应用程序空间,请确保他们无法访问存储数据库密码的文件。 此外,您可以尝试其他安全措施,例如在建立数据库连接后删除运行时的密码信息。

即在PHP中:

$db = "someCrypticPassword";
$conn = mysql_connect($host, $user, $pass, ...);
$db = "no-real-password";

答案 2 :(得分:0)

我在master数据库中有一个表(masterDB),它包含所有单独的DB的ID,Name和其他数据。每次设置新数据库时,都会使用新记录更新主数据库表。然后,该记录ID将附加到新数据库名称。

 masterDB.acct_id=1
 masterDB.acct_id=2
 etc, this table would hold the account name as well as the ID which is auto_incremented with each new record.

然后,每个新帐户数据库名称都使用标准前缀动态命名,并附加主数据库ID。

acctDBName_1, acctDBName_2 etc..

查找有关潜艇的数据时可以参考主数据库; sub可以只包含与每个子目的相关的数据。 祝你好运。