2013-10-27 64 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。然後在腳本中選擇其中一個連接,用它來執行所有查詢。

從一個客戶端打開多個連接不是好主意,因爲您將有效地連接一半的客戶端。

這僅適用於只有一臺數據庫服務器的情況,如果您使用只讀副本,那麼與不同服務器上的多個連接不成問題。

相關問題