假设您正在使用 Ruby 和 MySQL 编写一个简单的数据库 Web 应用程序。对数据库的访问由 Ruby 代码控制。 Ruby 代码用来访问数据的用户名是数据库中唯一的常规用户。该用户成为“root”有意义吗?或者为应用程序创建第二个用户是否有任何额外的安全性?
最佳答案
很简单,将 root 视为主用户,他可以做所有事情(默认情况下)。
如果他想转储整个数据库,他可以,如果他想创建一些数据来创建(例如)假账户以绕过您的银行系统,他可以。 因此,如果您的代码不够安全(这通常很常见),您就会遇到严重的安全问题。
通常,“基本”安全(真正基本的)应该是这样的: 创建一个简单的用户,赋予他(通过 GRANTS)在特定数据库上进行 SELECT、INSERT、UPDATE 和 DELETE 的权利。
创建另一个可以 SELECT 和锁定表以及 SHOW VIEWS 以执行转储(数据库保存)的用户。
在一个更“复杂”的系统上,你应该创建许多用户,这取决于他们应该访问什么,这是出于简单的原因:如果有人获得了 SQL 注入(inject)访问权限,如果用户只能访问一个 View (例如例如),而不是整个数据库,这是一个安全问题,但不是最糟糕的问题...... 还经常使用 View ...
最后不要忘记触发器,如果你想要(例如日志表),禁用表上的插入或更新或删除,对每个人(当然可以破坏触发器的人除外): Use a trigger to stop an insert or update
关于mysql - MySQL Web 应用程序的安全性良好 : Root? 不是 Root?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059493/