mysql - MySQL Web 应用程序的安全性良好 : Root? 不是 Root?

标签 mysql security

假设您正在使用 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/

相关文章:

MySQL 查询 IF EXISTS ELSE IF ELSE

php - 从另一个设置为仅接受来自本地主机的连接的 php 文件加载 PHP 文件中的解密 key 是否更安全?

java - 生成没有安全性的 jHipster 独立服务器应用程序

security - OpenID - 人们对 "login with x"的体验是什么?

java - 保护 ReSTLet 的组件

django - 当 SESSION_COOKIE_SECURE = True 时如何在 HTTP 中获取一些用户身份信息

mysql - 我应该为 'duration' 属性使用什么数据类型?

C# 使用 sql LIKE 过滤 datagridview 日期时间字段

MySQL 在更新语句中选择

mysql - 如何遍历 MySQL 结果集?