我知道为所有SECURITY DEFINER函数设置search_path至关重要。但是,我正在编写一个项目的代码,其中主要模式可以是“公共”模式。架构或其他一些架构(让我们称之为' foo')。这会导致问题,因为硬编码的公众'进入搜索路径的架构将破坏可移植性。相反,我考虑使用ALTER ROLE设置search_path或所有可以访问该功能的用户。这样,使用不同模式名称的部署只需要担心更改角色的搜索路径。
我的问题是,在函数定义中不 SET search_path是否存在安全风险,但是在具有执行该功能的权限的所有角色中?或者这不符合我的预期吗?有没有更好的方法为函数定义之外的SECURITY DEFINER函数动态设置search_path?