函数和触发器允许用户向后端服务器插入代码,这样其他用户可以在 不知觉的情况下执行这些代码.因此,两种机制都可以让用户相当隐蔽 地给别人设置 trojan horse(木马) 唯一的有效防护就是严格控制谁可以定义函数(也就是说,用 SQL 域写 入关系)和触发器.还可能要审核对系统表pg_class, pg_user和 pg_group 的 操作和修改人.
除了 SQL 外任何语言写的函数在后端服务器里面都是以 数据库服务器守护进程的操作系统权限运行的. 从一个信任的函数内部修改服务器的内部数据结构也是可能的. 因此,除了其他问题外,这样的函数可以绕过任何系统访问控制. 这是用户定义 C 函数的固有问题.