问题报告 纠错本页面

dblink_connect_u

名称

dblink_connect_u -- 危险的打开一个到远程数据库的持久连接

大纲

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()