設計數(shù)據庫

第一步一般都是創(chuàng)建數(shù)據庫,除非是使用第三方的數(shù)據庫服務。當創(chuàng)建一個數(shù)據庫的時候,會指定一個所有者來執(zhí)行和新建語句。通常,只有所有者(或超級用戶)才有權對數(shù)據庫中的對象進行任意操作。如果想讓其他用戶使用,就必須賦予他們權限。

應用程序永遠不要使用數(shù)據庫所有者或超級用戶帳號來連接數(shù)據庫,因為這些帳號可以執(zhí)行任意的操作,比如說修改數(shù)據庫結構(例如刪除一個表)或者清空整個數(shù)據庫的內容。

應該為程序的每個方面創(chuàng)建不同的數(shù)據庫帳號,并賦予對數(shù)據庫對象的極有限的權限。僅分配給能完成其功能所需的權限,避免同一個用戶可以完成另一個用戶的事情。這樣即使攻擊者利用程序漏洞取得了數(shù)據庫的訪問權限,也最多只能做到和該程序一樣的影響范圍。

鼓勵用戶不要把所有的事務邏輯都用 web 應用程序(即用戶的腳本)來實現(xiàn)。最好用視圖(view)、觸發(fā)器(trigger)或者規(guī)則(rule)在數(shù)據庫層面完成。當系統(tǒng)升級的時候,需要為數(shù)據庫開辟新的接口,這時就必須重做所有的數(shù)據庫客戶端。除此之外,觸發(fā)器還可以透明和自動地處理字段,并在調試程序和跟蹤事實時提供有用的信息。