0

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

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

或者

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

或者

每个操作的不同连接。

哪个最适合性能和安全性。

4

2 回答 2

0

我个人会坚持一个连接。

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

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

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

于 2013-10-27T07:07:59.630 回答
0

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

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

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

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

于 2013-11-18T23:41:20.187 回答