E.121. 版本 8.1.4
发布日期: 2006-05-23
这个版本包含各种自8.1.3以来的修复,包括对极其严重的安全问题的修补。 关于8.1主版本的新特性信息,请查看Section E.125。
E.121.1. 迁移到版本 8.1.4
运行8.1.X的用户不需要转储/恢复。不过,如果你是从一个早于8.1.2的版本升级而来, 那么请查看8.1.2的版本声明。
针对CVE-2006-2313和CVE-2006-2314中描述的SQL注入攻击的完全安全可能需要在应用的代码中修改。 如果你有应用嵌入了不可信的字符串到SQL命令中,你应该尽快检测它们, 以确保它们使用推荐的逃逸技术。在大多数情况下,应用应该使用库或驱动 (比如libpq的PQescapeStringConn()
) 提供的子例程执行字符串逃逸,而不是依赖于ad hoc代码完成逃逸。
E.121.2. 修改列表
修改服务器以在所有情况下都拒绝无效编码的多字节字符 (Tatsuo, Tom)
虽然PostgreSQL已经朝这个方向发展了一段时间了, 但是检查现在才一致的应用到所有编码和所有文本输入中, 并且现在总是提示错误而不只是警告。这个修改防范了CVE-2006-2313 中描述的SQL注入类型的攻击。
拒绝在字符串文本中不安全的使用
\'
作为服务器端防范CVE-2006-2314中描述的SQL注入类型的攻击, 服务器现在只接受
''
而不是\'
作为SQL字符串字面值中ASCII单引号的表示。缺省的, 只在client_encoding
设置为仅客户端的编码 (SJIS、BIG5、GBK、GB18030或UHC)时拒绝\'
, 这也是SQL注入有可能发生的情节。一个新的配置参数backslash_quote
可用于在需要时调整这个行为。请注意,针对CVE-2006-2314 的完全安全可能需要客户端侧的修改;但是backslash_quote
的目的是在一定程度上让不安全的客户端明显。修改libpq的字符串逃逸例程,意识到编码注意问题和
standard_conforming_strings
这为CVE-2006-2313和CVE-2006-2314中描述的安全问题修复了使用libpq 的应用,并且也提前防范了规划的到SQL标准字符串文本语法的转换。 同时使用多个PostgreSQL连接的应用应该迁移到
PQescapeStringConn()
和PQescapeByteaConn()
, 以确保为每个数据库连接中使用的设置做了正确的逃逸。 "手动"做字符串逃逸的应用应该修改为依赖于库例程。修复pgcrypto中的弱键选择 (Marko Kreen)
fortuna PRNG重播逻辑中的错误会导致一个可预知的会话秘钥在某些情况下被
pgp_sym_encrypt()
选择。这只影响没有使用OpenSSL的构造。修复一些不正确的编码转换函数
win1251_to_iso
、win866_to_iso
、euc_tw_to_big5
、euc_tw_to_mic
、mic_to_euc_tw
都在变化范围上有损坏。清理字符串中剩下的
\'
的使用 (Bruce, Jan)让自动清理在
pg_stat_activity
中可见 (Alvaro)禁用
full_page_writes
(Tom)在某些情况下,让
full_page_writes
关闭会导致崩溃恢复失败。 一个适当的修复将在8.2中出现;现在只是将它禁用了。各种规划器修复,尤其是位图索引扫描和MIN/MAX最优化 (Tom)
修复合并连接中不正确的最优化 (Tom)
外连接有时会发出多次未匹配行的拷贝。
修复在相同的事务中使用和修改plpgsql函数的崩溃
修复B-Tree索引被截断情况下的WAL重放
为包含
|
的模式修复SIMILAR TO
(Tom)修复
SELECT INTO
和CREATE TABLE AS
, 以在缺省表空间中创建表,而不是在基础目录中 (Kris Jurka)修复服务器,以正确的使用自定义DH SSL参数 (Michael Fuhr)
改善快速排序性能 (Dann Corbit)
目前这个代码只在Solaris上使用了。
修复x86系统上的OS/X Bonjour (Ashley Clark)
修复各种小的内存泄露
修复密码提示在某些Win32系统上的问题 (Robert Kinberg)
改善pg_dump对域的缺省值的处理
修复pg_dumpall以合理的处理命名相同的用户和组 (只在从早于8.1的服务器上转储时是可能的) (Tom)
用户和组将带有
LOGIN
权限被合并到一个角色中。 以前合并的角色不会有LOGIN
权限,使其不能用作一个用户。修复pg_restore
-n
,以作为记录工作 (Tom)