gpt4 book ai didi

mysql - 为 MySQL 用户提供最低权限

转载 作者:IT老高 更新时间:2023-10-28 23:50:45 42 4
gpt4 key购买 nike

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

最佳答案

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

也许对于经验丰富的开发人员来说,还有其他安全措施,但对于其他开发人员来说,在没有必要的情况下,为脚本提供完整、不受限制的访问权限以对数据库执行~任何~操作都是自找麻烦。

这里应该使用最小权限原则。对于 MySQL,拥有一个拥有所有权限的 super 用户,用于创建表、删除数据库等。理想情况下,此用户名和密码永远不会出现在任何 PHP 文件或 Web 服务器上的任何文件中。 (我以 PHP 为例,但它适用于其他 Web 应用程序)。您只能将此用户名和密码用于 PHPMyAdmin 或 MySQL Workbench 等软件。

然后,对于 PHP 脚本,有一个具有最低要求的脚本,例如仅 INSERT、SELECT、UPDATE,甚至可能没有 DELETE,具体取决于您的 PHP 脚本。这将在 PHP 文件中,也就是说,实际上只有文档根目录之外的一个文件,正如大多数人所建议的那样。

原因是:是的,您不需要为每个 Web 应用程序用户分配一个 MySQL 用户。但应适用最小特权原则 ( http://en.wikipedia.org/wiki/Principle_of_least_privilege )。如果您的 MySQL super 用户因为您不小心将 MySQL 连接脚本命名为 .txt 而不是 .php 而受到威胁,或者有人获得了对 Web 服务器文件的访问权限,那么至少他们可以做的“最糟糕的”是选择、更新和插入。 .. 虽然无论如何都会导致大问题,但并不像给他们 DROP DATABASE、DROP TABLES 和更糟糕的事情那么糟糕。

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

由于 MySQL 没有 ROLES(在提出原始问题时,根据 Bill),因此允许任何 Web 脚本仅通过一个 super 用户访问 MySQL 是非常危险的。

关于mysql - 为 MySQL 用户提供最低权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/335951/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com