1

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

现在我正在构建一个需要多个数据库的网站。与使用像 _users _content _common 这样的命名方案相比,使用隐晦的命名会使事情变得更难。

用常用词命名我的数据库会带来安全风险吗?我的用户名和密码总是神秘而安全的。

谢谢!

4

3 回答 3

5

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

使用非常广泛传播的 CMS 系统的人有时会重命名 DMS 和表,以尝试和混淆尝试众所周知的漏洞的爬虫,但这对于您的一次性系统来说不是问题。

于 2012-09-22T14:49:42.790 回答
0

我将在主数据库中拥有一个表(masterDB),其中包含所有单个数据库的 ID、名称和其他数据。每次设置新数据库时,主数据库表都会使用新记录进行更新。然后将该记录 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..

查找subs的数据时可以参考Master DB;并且 subs 可以只包含与每个子目的相关的数据。祝你好运。

于 2012-09-22T16:00:53.107 回答
0

隐秘地命名您的数据库只能通过混淆来提高安全性,并且由于这不是一个可靠的安全功能,所以它没有多大帮助。

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

您的安全措施仅适用于您与其他用户共享您的 MySQL 服务器并且您不希望他们知道您在那里存储的内容的情况。

使用安全密码非常好。

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

即,在 PHP 中:

$db = "someCrypticPassword";
$conn = mysql_connect($host, $user, $pass, ...);
$db = "no-real-password";
于 2012-09-22T14:56:15.460 回答