В срочном порядке выпущены (http://www.postgresql.org/about/news.561) новые версии PostgreSQL 8.1.4 (http://www.postgresql.org/ftp/source/v8.1.4), 8.0.8 (http://www.postgresql.org/ftp/source/v8.0.8), 7.4.13 (http://www.postgresql.org/ftp/source/v7.4.13) и 7.3.15 (http://www.postgresql.org/ftp/source/v7.3.15).
Обновление связано с обнаружением серьезной проблемы безопасности (http://www.postgresql.org/docs/techdocs.48), позволяющей осуществлять подстановку SQL запроса (SQL injection), используя некоторые клиентские приложения.Проблема связана с возможностью передачи escape последовательности "\'" через некорректную компоновку символов в UTF-8 или других многобайтных кодировках (pg_escape_string в PHP без обновления не спасает). Для баз в которых данные представлены в однобайтных кодировках, таких как KOI8-R/cp1251 уязвимость не представляет опасности.
Внимание, теперь PostgreSQL отвергает вставку любых многобайтных символов содержащих ошибки, т.е. попытка вставки некорректных UTF-8 строк будет вызывать ошибку (такое встречается часто), о проверке стоит позаботится на уровне приложений. Кроме того прекращена поддержка экранирования вида "\'", теперь всегда нужно использовать представление "''".URL: http://www.postgresql.org/about/news.561
Новость: http://www.opennet.me/opennews/art.shtml?num=7579
UTF-8 - зло. И _очень_ жаль что из за него похерили '\' :(
Если зло - расскажи дорогой, как хранить в БД шаблон инструкции на русском, китайском, английском, французском, польском, украинском, иврите и арабском (на одном листе)?
Не могу понять, чем разработчикам не понравился Сишный способ экранирования спец-символов, при помощи слеша?