我的问题可能是错的,但我对设计访问MySQL数据库的Web应用程序存有疑问。
在我和我的朋友之间发生了对话。
我的朋友让我为系统的每个用户角色创建单独的用户帐户,并要求我只为管理员用户启用删除选项。
+-----------+-----------------+
|User role | Db credential |
+-----------+-----------------+
|Admin | Admin |
+-----------+-----------------+
|User | User |
+-----------+-----------------+
我说过,我们只能有一个用户帐户来访问数据库,所有其他东西都可以通过授权原则完成,我引用了#34;在开发Web应用程序时,我们可以为每个开发人员使用多个db用户帐户,但同时部署Web应用程序时,我们可能只使用一个用户帐户来部署应用程序"
+---------+-------------+
|User role|Db credential|
+---------+-------------+
|Admin | Only one |
+---------+user account +
|User | for web app |
+---------+-------------+
我的朋友和我争辩说,为了避免SQL注入,我们可以像他说的那样设计系统。我认为这是完全错误的论据。
请帮助我在设计Web应用程序时找到最佳实践,尤其是使用用户角色和db用户凭据。我的朋友很困惑。
答案 0 :(得分:0)
通常你只有一个可以访问数据库的mysql帐户,一个应用程序的更多帐户(为了提高安全性)对我来说没有意义,因为如果你的系统受到攻击,所有登录都会泄露,因为它们需要在你的应用程序代码中定义。
另一方面,你给攻击者许多mysql帐户攻击的可能性更大。那么在一个应用程序中使用多个帐户还剩下什么呢?访问用户对数据库的操作(限制用户a没有编辑权限等)。
用户应对您的数据库执行的操作(删除内容,编辑内容b)应由您的应用程序逻辑处理,以确保限制每个用户的操作访问权限(例如,不允许写入outfile等)但不处理这些简单的事情。成本(每个用户的多个数据连接)在我看来比一个好的编程逻辑要高得多。
因此,增加安全性,多个帐户毫无意义,使用一个具有强密码的帐户,并让您的编程逻辑编辑,删除等简单操作。