17.5. 函數和觸發器

函數和觸發器允許用戶向後端伺服器插入代碼,這樣其他用戶可以在不知覺的情況下執行這些代碼。 因此,兩種機制都可以讓用戶相當隱蔽地給別人設置 "Trojan horse(木馬)", 唯一的有效防護就是嚴格控制誰可以定義函數。

後端伺服器裡面執行的函數都是以資料庫伺服器守護進程的操作系統權限執行的。 如果所使用的編程語言允許無檢查的內存訪問,那麼是可能修改伺服器的內部資料結構也是可能的。 因此,除了其他問題外,這樣的函數可以繞過任何系統訪問控制。 允許這樣訪問的函數語言都被認為是"不可信的(untrusted)"PostgreSQL 只允許超級用戶使用這樣的語言書寫函數。