[英]Best approach for DB connections
什么是數據庫連接的最佳方法。
一種具有所有操作所有特權(CRUD)的連接
要么
2個連接,一個用於DELETE,另一個用於其他(CRU)
要么
每種操作使用不同的連接。
哪個是最佳性能和安全性。
我個人會堅持一種聯系。
具有1個具有所有特權的連接和具有2個連接之間沒有安全性區別。 如果攻擊者可以訪問CRU憑據,那么他們無論如何都可以輕松訪問其他憑據。
在很大程度上,保持簡單很有價值。 您不必花太多時間去考慮管理連接,那么您就獲得了更多的諸如安全編碼,最佳實踐,管理漏洞之類的空間。
如果您特別關注批量刪除,則可以使用存儲的例程(從此處開始: http : //dev.mysql.com/doc/refman/5.1/en/stored-routines.html )刪除單個行。 。 這樣,您的PHP連接可以具有CRU特權(但不能刪除),並具有運行此存儲的過程的權限。 這意味着攻擊者必須多次調用此過程才能刪除多個記錄,並且(如果操作正確)將無法使用單個SQL語句來進行大規模刪除。
常見的做法是對數據庫具有單一連接(用戶),並具有對SELECT,INSERT,UPDATE和DELETE的授予權限。
如果要擁有具有不同權限的單獨用戶,則創建一個僅具有SELECT的用戶,以及另一個具有所有CRUD的用戶。 然后在腳本中選擇這些連接之一,將其用於執行所有查詢。
從一個客戶端打開多個連接不是一個好主意,因為您實際上將能夠連接的客戶端數量減少一半。
這僅在只有一台數據庫服務器的情況下適用,如果使用只讀副本,則與不同數據庫(在不同服務器上)的多個連接不是問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.