我的ISP仅提供一个用户帐户来访问MYSQL数据库。 AFAIK,我需要在PHP代码中以明文形式存储数据库的连接凭据。因此,我站点的普通用户可以对我的数据库进行管理访问。他们通常不能滥用此访问权限,因为我设计的官方后门需要密码。 [使用密码对用户进行身份验证的方法是在数据库的用户列表中搜索密码哈希,然后查看该用户是否被标记为管理员。]但是,能够侵入服务器文件系统的人可以阅读PHP代码并了解我的ISP提供的唯一用户的密码。
除了拥有两个对数据库具有不同权限的用户之外,还有没有办法对访问进行分叉,以便超级用户是唯一能够执行CREATE,ALTER和DROP的用户?
答案 0 :(得分:0)
是的,向大多数用户授予一组有限的特权以及向管理员用户授予更具破坏性的特权是很有意义的。
您可能希望阅读https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html,以查看可以授予用户的各种特权类型以及它们对应的操作。
但是,如果您的应用程序始终使用相同的MySQL凭据进行连接,然后通过查找数据库中的数据来区分用户,那么这实际上并没有帮助。 MySQL的GRANT
对您的应用程序级用户一无所知,只对MySQL用户一无所知,并且该用户具有一组特权。
因此,由您来控制代码中每个应用程序用户的权限。
如果您的用户获得了非法访问并绕过您的代码,则他们将具有授予MySQL用户的任何特权。您无法控制它。
它属于“如果用户可以访问我的文件系统该怎么办?”的常规类别。如果这是您需要解决的问题,则不能让他们访问您的文件系统。将您的服务实现为软件即服务(SaaS)。