Mysql 从web应用程序访问数据库的最佳实践
我的问题可能是错误的,但我对设计访问MySQL数据库的web应用程序表示怀疑 下面的对话发生在我和我的朋友之间 我的朋友要求我为系统的每个用户角色创建单独的用户帐户,并要求我仅对管理员用户启用删除选项Mysql 从web应用程序访问数据库的最佳实践,mysql,sql,database,web,Mysql,Sql,Database,Web,我的问题可能是错误的,但我对设计访问MySQL数据库的web应用程序表示怀疑 下面的对话发生在我和我的朋友之间 我的朋友要求我为系统的每个用户角色创建单独的用户帐户,并要求我仅对管理员用户启用删除选项 +-----------+-----------------+ |User role | Db credential | +-----------+-----------------+ |Admin | Admin |
+-----------+-----------------+
|User role | Db credential |
+-----------+-----------------+
|Admin | Admin |
+-----------+-----------------+
|User | User |
+-----------+-----------------+
我说过,我们只能有一个用户帐户来访问db,所有其他事情都可以通过授权原则来完成,我引用“在开发web应用程序时,我们可以为每个开发人员使用多个db用户帐户,但在部署web应用程序时,我们可能只为部署的应用程序使用一个用户帐户”
我的朋友和我争论说,为了避免SQL注入,我们可以像他说的那样设计系统。我认为这是完全错误的论据。
请帮助我在设计web应用程序时找到最佳实践,特别是使用用户角色和db用户凭据。我被我的朋友搞糊涂了。通常你只有一个mysql帐户可以访问数据库,一个应用程序的多个帐户(为了提高安全性)对我来说毫无意义,因为如果你的系统受到破坏,所有登录都会泄露,因为它们需要在你的应用程序代码中定义 另一方面,您为拥有多个mysql帐户的攻击者提供了更多的攻击机会 那么,在一个应用程序中使用多个帐户还剩下什么呢?啊,访问针对数据库的用户操作(限制没有编辑权限的用户a等) 用户应该对您的数据库执行的操作(删除内容a、编辑内容b)应该由您的应用程序逻辑来处理,当然最好限制每个用户的操作访问权限(例如不允许写入outfile等),但不要处理这样简单的事情。在我看来,成本(每个用户有多个数据连接)比一个好的编程逻辑要高得多
因此,在多个帐户毫无意义的情况下增加安全性,使用一个具有强密码的帐户,并让简单的操作通过编程逻辑进行编辑、删除等操作。您的问题更多的是关于开发还是用户方面(如生产),以使用更多的db用户?
+---------+-------------+
|User role|Db credential|
+---------+-------------+
|Admin | Only one |
+---------+user account +
|User | for web app |
+---------+-------------+