我正在构建一个在mysql中添加和删除用户的php系统。它目前是这样设置的:-用户尝试登录站点-在projectdb.users (也是mysql用户凭证)中查找用户名和散列(sha256、salt、密码)-找到它,然后在登录时使用该用户名和密码执行任何mysql_connect
因此,当我在系统中添加用户时,我将他们的凭据添加到一个表中,并将他们添加为只具有对projectdb数据库的最小权限的mysql用户。
但是当我添加一个管理员帐户时,我给了他们对该数据库的完全权限,并给了他们mysql授予/添加用户的权限,这样他们就可以添加更多的用户。这似乎太强大了,即使这些用户不能直接连接并登录到mysql (但如果他们可以,他们可以添加任何人)。
与其将mysql用户添加到系统中,不如在php文件中硬编码单个用户和管理员的权限?有没有比这两个想法更安全的方法?
发布于 2012-02-13 11:27:19
如果用户不是直接访问数据库,则不必直接授予他们grant/add user权限。
大多数CMS都实现了一个权限表,该表允许PHP代码检查用户是否具有执行特定操作的适当权限。因此,您的PHP代码可以简单地检查登录的用户是否拥有权限表设置的权限,然后让实际的管理员用户(即root用户)自己创建用户。它更加曲折,但通过在权限结构上创建一个额外的层,提供了稍微更细粒度的控制。
发布于 2012-02-13 11:30:01
根据大卫的建议..。如果这是一个web应用程序,为什么要将它们添加到MySQL用户中?这是用于日志记录的吗?如果没有真正令人信服的理由,我不认为以编程方式添加用户是一种好的做法。这通常是为了将风险降到最低而进行抽象。
https://stackoverflow.com/questions/9255131
复制相似问题