2013-10-27 47 views
0

DB连接的最佳方法是什么?与所有权限全部操作(CRUD)DB连接的最佳方法

一个连接

或者

2连接,一个用于DELETE和一个为他人(CRU)

或者

对于每个不同的连接操作。

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

+0

安全性方面没有区别,如果代码有两个连接都打开。 – Amber

+0

感谢您的评论,如果DELETE连接未打开(仅适用于注册用户),是否有2个连接是好事。 – fmask

回答

0

我个人会坚持一个连接。

与1个连接与所有特权和2个连接没有安全差异。如果攻击者有权访问CRU凭证,那么他们可以轻松访问其他凭证。

在很大程度上保持简单是有价值的。您必须考虑管理连接的次数越少,那么您为安全编码,最佳实践,管理漏洞等其他事情获得的顶级空间就越多。

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

0

通常的做法是将具有SELECT,INSERT,UPDATE和DELETE权限的单一连接(用户)连接到数据库。

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

从一个客户端打开多个连接不是好主意,因为您将有效地连接一半的客户端。

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

相关问题