🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# E.121\. 版本 8.1.4 > **发布日期:** 2006-05-23 这个版本包含各种自8.1.3以来的修复,包括对极其严重的安全问题的修补。 关于8.1主版本的新特性信息,请查看[Section E.125](#calibre_link-247)。 ## 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)