Skip to content

22.6. 函数安全性#

函数、触发器和行级安全策略允许用户将代码插入到后端服务器中,而其他用户可能会无意中执行该代码。因此,这些机制允许用户比较轻松地对其他人进行“特洛伊木马”攻击。最强大的保护措施是对谁可以定义对象进行严格控制。如果不可行,请编写仅引用受信任所有者拥有的对象的查询。从search_path中删除允许不受信任的用户创建对象的任何模式。

函数在后端服务器进程中运行,具有数据库服务器守护程序的操作系统权限。如果用于函数的编程语言允许未经检查的内存访问,则可以更改服务器的内部数据结构。因此,此类函数可以绕过任何系统访问控制,还有很多其他可能。允许此类访问的函数语言被认为是“不受信任的”,而PostgreSQL仅允许超级用户创建用这些语言编写的函数。