首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >仅为MySQL用户提供最低权限

仅为MySQL用户提供最低权限
EN

Stack Overflow用户
提问于 2008-12-03 00:57:13
回答 2查看 17.2K关注 0票数 20

对于web应用程序,在创建将连接到MySQL数据库的用户时,您可以选择权限。假设该用户要做的唯一操作是SELECT/INSERT/UPDATE/DELETE,那么只提供这些特权似乎是有意义的,但是我从来没有在任何地方看到过这样的建议--支持和反对这种方法的原因是什么?

EN

回答 2

Stack Overflow用户

发布于 2012-05-15 15:37:21

我不同意Bill的观点,Atomix的思路更合适。除非可以证明并非如此,否则Bill的回答会极大地增加数据库被破坏的风险。

也许对于非常有经验的开发人员来说,还有其他的安全性,但对于其他开发人员来说,当没有必要这样做的时候,给一个脚本完整的、不受限制的访问数据库的权限是自找麻烦的。

这里应该使用最小特权原则。对于MySQL,拥有一个拥有所有权限的超级用户,该权限用于创建表、删除数据库等。理想情况下,此用户名和密码永远不会出现在任何PHP文件或web服务器上的任何文件中。(我使用PHP作为示例,但它也适用于其他web应用程序)。您只能将此用户名和密码与PHPMyAdmin或MySQL工作台之类的东西一起使用。

然后,对于PHP脚本,根据您的PHP脚本,只需要最少的一个,比如只需插入、选择、更新,甚至可以不删除。这应该在PHP文件中,也就是说,实际上只有一个文件在文档根目录之外,这是大多数人推荐的。

原因如下:是的,并不是每个web应用程序用户都需要一个MySQL用户。但最小特权原则( http://en.wikipedia.org/wiki/Principle_of_least_privilege )应该适用。如果你不小心将你的MySQL连接脚本命名为.txt而不是.php,或者有人获得了访问web服务器文件的权限,你的MySQL超级用户就会受到威胁,至少他们能做的最糟糕的事情就是选择、更新和插入……虽然这可能会造成很大的问题,但并不比让他们删除数据库、删除表和更糟糕的事情更糟糕。

此外,在我目前的项目中,由于敏捷开发实践(我不为http://www.agilealliance.org/工作,但建议使用PHPMyAdmin ),有一两个“非技术”团队成员直接使用PHPMyAdmin对MySQL数据库进行直接更改。这是因为不需要为简单的直接数据录入创建CMS。在这种情况下,第三个MySQL用户具有合理的权限,但同样,“刚刚好”的权限适合他们。我们不想用太少的特权来削弱团队成员,但他们当然不应该能够意外地删除或更改内容。

由于MySQL没有角色(在最初的问题被问到的时候,根据比尔的说法),那么允许任何web脚本只使用一个超级用户访问MySQL是非常危险的。

票数 23
EN

Stack Overflow用户

发布于 2008-12-03 01:46:18

web应用程序通常只使用一个用户来访问数据库,而不是每个实际用户帐户使用一个用户。应用最小权限是一种很好的做法。用户名和密码将被编码到您的脚本中(有人混淆这一点吗?)因此,如果您的脚本没有得到适当的管理,就有妥协的余地。

在我的经验中,我很少让应用程序删除行--最好是将行标记为已删除,因为这样您就可以对其中的内容进行审核,而不是不知道那里有什么!这种方法还有助于保持表和索引的最优化。

因此,我建议只允许插入、更新和选择-如果你的应用程序的某些部分需要放松一点,它会很快变得明显!

允许更多权限只会通过发出资源密集型命令或允许恶意数据攻击来扩大DoS攻击的可能性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/335951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档