第一步一般都是創(chuàng )建數據庫,除非是使用第三方的數據庫服務(wù)。當創(chuàng )建一個(gè)數據庫的時(shí)候,會(huì )指定一個(gè)所有者來(lái)執行和新建語(yǔ)句。通常,只有所有者(或超級用戶(hù))才有權對數據庫中的對象進(jìn)行任意操作。如果想讓其他用戶(hù)使用,就必須賦予他們權限。
應用程序永遠不要使用數據庫所有者或超級用戶(hù)帳號來(lái)連接數據庫,因為這些帳號可以執行任意的操作,比如說(shuō)修改數據庫結構(例如刪除一個(gè)表)或者清空整個(gè)數據庫的內容。
應該為程序的每個(gè)方面創(chuàng )建不同的數據庫帳號,并賦予對數據庫對象的極有限的權限。僅分配給能完成其功能所需的權限,避免同一個(gè)用戶(hù)可以完成另一個(gè)用戶(hù)的事情。這樣即使攻擊者利用程序漏洞取得了數據庫的訪(fǎng)問(wèn)權限,也最多只能做到和該程序一樣的影響范圍。
鼓勵用戶(hù)不要把所有的事務(wù)邏輯都用 web 應用程序(即用戶(hù)的腳本)來(lái)實(shí)現。最好用視圖(view)、觸發(fā)器(trigger)或者規則(rule)在數據庫層面完成。當系統升級的時(shí)候,需要為數據庫開(kāi)辟新的接口,這時(shí)就必須重做所有的數據庫客戶(hù)端。除此之外,觸發(fā)器還可以透明和自動(dòng)地處理字段,并在調試程序和跟蹤事實(shí)時(shí)提供有用的信息。