从Web应用程序访问db的最佳实践

时间:2014-07-22 05:24:41

标签: mysql sql database web

我的问题可能是错的,但我对设计访问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用户凭据。我的朋友很困惑。

1 个答案:

答案 0 :(得分:0)

通常你只有一个可以访问数据库的mysql帐户,一个应用程序的更多帐户(为了提高安全性)对我来说没有意义,因为如果你的系统受到攻击,所有登录都会泄露,因为它们需要在你的应用程序代码中定义。

另一方面,你给攻击者许多mysql帐户攻击的可能性更大。

那么在一个应用程序中使用多个帐户还剩下什么呢?访问用户对数据库的操作(限制用户a没有编辑权限等)。

用户应对您的数据库执行的操作(删除内容,编辑内容b)应由您的应用程序逻辑处理,以确保限制每个用户的操作访问权限(例如,不允许写入outfile等)但不处理这些简单的事情。成本(每个用户的多个数据连接)在我看来比一个好的编程逻辑要高得多。

因此,增加安全性,多个帐户毫无意义,使用一个具有强密码的帐户,并让您的编程逻辑编辑,删除等简单操作。