通过php添加管理员mysql用户的安全方法

时间:2012-02-13 03:15:56

标签: php mysql security authentication

我正在构建一个在mysql中添加和删除用户的php系统。它目前设置如下: - 用户尝试登录站点 - 在projectdb.users中查找用户名和哈希值(sha256,salt,密码)(这也是一个mysql用户凭据) - 找到它然后使用该用户名和密码在登录时执行任何mysql_connect

因此,当我在系统中添加用户时,我将他们的凭据添加到表中,并将它们作为mysql用户添加,只在projectdb数据库上具有最小权限。

但是当我添加一个管理员帐户时,我正在给予他们对该数据库的完全权限,并为他们提供mysql grant / add用户权限,以便他们可以添加更多用户。这似乎太强大,即使这些用户无法直接连接并登录到mysql(但如果他们可以添加任何人)。

不是将mysql用户实际添加到系统中,而是在php文件中对单个用户和管理员权限进行硬编码更好吗?有没有比这两个想法更安全的方式?

2 个答案:

答案 0 :(得分:5)

如果用户没有直接访问数据库,则不必直接授予他们授予/添加用户权限。

大多数CMS实现了一个权限表,允许PHP代码检查用户是否具有执行特定操作的适当权限。因此,您的PHP代码可以简单地检查登录用户是否具有权限表设置的权限,然后让实际的管理员用户(即root)创建用户本身。它更加迂回,但通过在该权限结构上创建一个额外的层来提供稍微更精细的控制。

答案 1 :(得分:2)

Per David的建议......如果这是一个网络应用程序,为什么要将它们添加到MySQL用户呢?这是伐木吗?没有真正令人信服的理由,我无法以编程方式将用户添加为良好实践。这通常是故意抽象的,以尽量降低风险。