【问题标题】:Best approach for DB connections数据库连接的最佳方法
【发布时间】:2013-10-27 06:19:19
【问题描述】:

什么是数据库连接的最佳方法。

一个具有所有操作的所有权限的连接 (CRUD)

或者

2 个连接,一个用于 DELETE,一个用于其他 (CRU)

或者

每个操作都有不同的连接。

哪个最有利于性能和安全性。

【问题讨论】:

  • 安全方面没有区别,如果代码仍然打开两个连接。
  • 感谢您的评论,如果DELETE连接未打开,有2个连接好不好(仅限注册人)。

标签: php mysql sql database connection


【解决方案1】:

我个人会坚持一个连接。

拥有所有权限的 1 个连接与拥有 2 个连接的安全性没有区别。如果攻击者能够访问 CRU 凭据,那么他们无论如何都可以轻松访问其他凭据。

在很大程度上,保持简单是有价值的。您对管理连接的考虑越少,您在安全编码、最佳实践、管理漏洞等其他方面的空间就越大。

如果您特别关心批量删除,可以使用存储例程(从这里开始:http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html)来删除一行。然后,您的 PHP 连接可能具有 CRU 权限(但不能删除),以及运行此存储过程的权限。这意味着攻击者必须多次调用此过程来删除多条记录,并且(如果操作正确)将无法使用单个 SQL 语句实现批量删除。

【讨论】:

    【解决方案2】:

    通常的做法是使用授予 SELECT、INSERT、UPDATE 和 DELETE 权限的单一连接(用户)到数据库。

    如果您希望拥有不同权限的单独用户,请创建一个仅具有 SELECT 的用户和另一个具有所有 CRUD 的用户。然后在脚本中选择其中一个连接使用它来执行所有查询。

    从一个客户端打开多个连接并不是一个好主意,因为您实际上将能够连接的客户端数量减半。

    这仅适用于您只有一台数据库服务器的情况,如果您使用只读副本,那么与不同数据库(在不同服务器上)建立多个连接不是问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 2022-01-23
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 2011-03-20
      相关资源
      最近更新 更多