dblink_connect_u(text connstr) returns text dblink_connect_u(text connname, text connstr) returns text
dblink_connect_u()
与dblink_connect()
是相同的,
除了它将允许非超级用户使用任何身份验证方法进行连接。
如果远程服务器选择一个不涉及密码的身份验证方法,然后模拟并且产生权限的随后升级,
因为该会话将出现于用户,正如本地PostgreSQL服务器运行的那个。
同时,即使远程服务器确实需要密码,从服务器环境提供密码是可能的,比如
~/.pgpass文件从属于服务器的用户。这不仅仅打开模拟风险,而且
可能将密码暴露给不信任的远程服务器。
因此,dblink_connect_u()
初始安装从PUBLIC撤销的所有权限。
使得它不可请求即付只有超级用户可以。
在一些情况下可以为dblink_connect_u()
指定可以信赖的用户适当授予
EXECUTE权限,但这应该仔细的做。
推荐任何从属于服务器的用户的~/.pgpass文件不包含
指定通配符主机名的任何记录。
更多详情请参阅dblink_connect()
。