dblink_connect_u

dblink_connect_u —不安全地打开到远程数据库的持久连接

Synopsis

dblink_connect_u(text connstr) returns text
dblink_connect_u(text connname, text connstr) returns text

Description

dblink_connect_u()dblink_connect()相同,除了它允许非超级用户使用任何身份验证方法进行连接。

如果远程服务器选择不涉及密码的身份验证方法,则可能会进行模拟和随后的特权升级,因为该会话似乎来自于本地 PostgreSQL 服务器运行所在的用户。同样,即使远程服务器确实要求 Importing 密码,也可以从服务器环境中提供该密码,例如属于服务器用户的~/.pgpass文件。这不仅冒充冒充的风险,而且还可能向不可靠的远程服务器公开密码。因此,最初安装dblink_connect_u()时会撤消PUBLIC的所有特权,从而使其无法被超级用户除外调用。在某些情况下,将dblink_connect_u()EXECUTE权限授予被认为值得信任的特定用户可能是适当的,但是应格外小心。还建议所有属于服务器用户的~/.pgpass文件包含任何指定通配符主机名的记录。

有关更多详细信息,请参见dblink_connect()