如何保护数据库服务器?

目前我的数据库用户和密码很容易猜到,例如。

数据库用户:dbadmin

数据库密码:super + companyname

什么和如何生成安全的数据库密码? 使用md5或sha1?

我需要注意什么来保护我的数据库?

我正在使用PHP,谢谢

在select密码或用户名时,php应该没有关系,编程语言不应该对它有任何实际的影响。 我一直使用pwgen -syB为任何服务生成密码。 对于类似于数据库的东西,将密码粘贴到文件中,而不必实际记住它,我可能会使用pwgen -syB 10或20。

散列algorithm(SHA-1或MD5)的select不会影响密码本身的强度。 它只被数据库服务器用来存储代表你的密码的string。

如果你保护密码的存储位置(这通常是一个好主意),selectSHA-1或MD5并不重要。

我会selectSHA-1,因为它比现在的MD5更安全,但在这种特殊情况下,这应该不会有问题。

安全数据库还应该包括访问用户访问的整个数据库的哪些部分以及她可以执行哪些操作。 所以,请先考虑你的资助。

这可能是更重要的是你正在使用的数据库。 正如你不说,我会给一般的build议。 如果你评论,我会尽力给予更具体的帮助。

应该有几个领域你应该看看。 首先,如果数据库与应用程序位于同一主机上,则将数据库configuration为仅绑定到回送接口。 这意味着数据库不能通过networking访问。 你将不得不在本地机器上访问它。 这不会阻止本地用户或黑客进入机器的人。 如果数据库位于远程服务器上,请查看仅限应用程序服务器的访问权限。 如果您不信任主机之间的networking,请使用SSL进行连接调查。

其次,检查授予个人用户的权限。 大多数数据库服务器都有一组非常灵活的权限,您可以从单个服务器授予或撤销这些权限。 如果您只需要用户从数据库中读取数据,只需授予他们SELECT权限。 Web应用程序需要改变模式的能力应该没有任何理由,所以不要让他们使用CREATE,CHANGE或DROP。

如果您无法远程访问数据库,则为您的用户使用强密码没有任何好处。

有一点你应该非常小心审计你的PHP,以防止SQL注入攻击你的数据库。 在PHP中这很容易忘记,因为它对你没有什么帮助。 其他语言倾向于使用占位符,这使得这种types的攻击几乎无关紧要。

我使用Diceware来select强密码。 你也应该。

http://world.std.com/~reinhold/diceware.html

有一点你应该非常小心审计你的PHP,以防止SQL注入攻击你的数据库。 在PHP中这很容易忘记,因为它对你没有什么帮助。 其他语言倾向于使用占位符,这使得这种types的攻击几乎无关紧要。

使用预准备语句 (使用PDO)有助于防止SQL注入。

如果您无法远程访问数据库,则为您的用户使用强密码没有任何好处。

如果有人能够访问数据库服务器本身呢? 如果使用强密码,那么如果服务器configuration合理,则必须成为root用户才能无限制地访问存储在数据库中的数据。