PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 E. 版本说明 | 下一页

# E.157. 版本 8.1.4

> 发布日期: 2006-05-23

这个版本包含各种自8.1.3以来的修复，包括对极其严重的安全问题的修补。 关于8.1主版本的新特性信息，请查看第 E.161 节。

## E.157.1. 迁移到版本 8.1.4

运行8.1.X的用户不需要转储/恢复。不过，如果你是从一个早于8.1.2的版本升级而来， 那么请查看第 E.159 节。

针对CVE-2006-2313和CVE-2006-2314中描述的SQL注入攻击的完全安全可能需要在应用的代码中修改。 如果你有应用嵌入了不可信的字符串到SQL命令中，你应该尽快检测它们， 以确保它们使用推荐的转义技术。在大多数情况下，应用应该使用库或驱动 （比如libpq的`PQescapeStringConn()`） 提供的子例程执行字符串转义，而不是依赖于ad hoc代码完成转义。

## E.157.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)

上一页 | 起始页 | 下一页
版本 8.1.5 | 上一级 | 版本 8.1.3