2012-09-22 58 views
1

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

现在我正在构建一个需要多个数据库的网站。使用神秘的命名会使事情变得更加困难,而使用像_users _content _common这样的命名方案。

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

谢谢!

+2

为什么你会使用神秘的数据库名称?我的数据库名称是该网站的域名或某个项目名称... –

+0

这件事情我开始做的时候我第一次开始开发网站。我总是被告知要使用难以猜测的名字和密码来确保一切安全。我想这转向命名数据库。 –

+0

如果您的安全依赖于一个难以猜测的名字,这是浪费空间对任何攻击,总之当地村白痴的厚表弟。 –

回答

5

用有意义的名称命名数据库。隐藏名称不会解决您可能遇到的任何安全问题,也不会使较差的代码更容易受到SQL注入的攻击。一旦我可以注入你的sql调用,我可以找到你的数据库名称,不管你做得多傻。

使用非常广泛的cms系统的用户有时会重命名dbs和表以尝试混淆尝试众所周知的攻击的抓取工具,但这对您的一个系统不会造成问题。

+0

谢谢!我正在使用准备好的语句,所以我不担心SQL注入。你说的完全正确,如果你在某种程度上,你会得到的名字,不管他们什么叫得到。 –

0

命名含糊你的数据库只能通过模糊增加安全性,因为这不是一个realiable安全功能,它只是没有多大帮助。

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

您的安全措施只适用于您要与其他用户共享您的MySQL服务器并且您不希望他们知道您存储在那里的信息。

使用安全密码非常好。

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

即,在PHP中:

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

我将不得不保存所有个人DB的ID,姓名和其他数据的主数据库一个表(masterDB)。每次安装新数据库时,主数据库表都会更新为新记录。然后,该记录标识将附加到新的数据库名称。

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. 

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

acctDBName_1, acctDBName_2 etc.. 

主数据库可以在查找关于子公司的数据时被引用;并且潜艇只能包含与每个潜艇目的相关的数据。 祝你好运。