【发布时间】:2012-02-13 03:15:55
【问题描述】:
我正在构建一个在 mysql 中添加和删除用户的 php 系统。它目前是这样设置的: - 用户尝试登录网站 - 在 projectdb.users 中查找用户名和哈希(sha256,盐,密码)(这也是一个 mysql 用户凭据) - 找到它,然后在登录时使用该用户名和密码执行任何 mysql_connect
因此,当我在系统中添加用户时,我会将他们的凭据添加到表中,并将它们添加为仅对 projectdb 数据库具有最小权限的 mysql 用户。
但是当我添加一个管理员帐户时,我将授予他们对该数据库的完全权限,并授予他们 mysql 授予/添加用户权限,以便他们可以添加更多用户。这似乎太强大了,即使这些用户不能直接连接和登录 mysql(但如果可以的话,他们可以添加任何人)。
在 php 文件中硬编码单个用户和管理员权限而不是实际将 mysql 用户添加到系统中更好吗?还有比这两个想法更安全的方法吗?
【问题讨论】:
-
如果这是一个网络应用程序,你为什么要将它们添加到 MySQL 用户?这是用来记录的吗?如果没有真正令人信服的理由,我不会认为以编程方式添加用户是一种好的做法。
-
您知道每个用户都可以共享一个 mysql 用户组凭据吗?
-
数据库连接凭据通常与应用程序代码一起存储,将应用程序用户与单个数据库帐户相关联是非常不寻常的(对于 Web 应用程序)。
-
@AlexC,这应该作为答案发布。这是正确的。
-
@davidethell 我把你的建议铭记在心。谢谢。
标签: php mysql security authentication