Проблемы с PHP 5.4 и htmlspecialchars


Неожиданно в PHP 5.4 было поменяно поведение htmlspecialchars – очень частотной функции для фильтрации пользовательского ввода.
Такое ломание обратной совместимости вызвало стоны разработчиков по всему Интернету.


Почитать об этом можно здесь и здесь; а также еще в куче разных мест.


Мы приняли решение использовать следующий трюк для решения этой проблемы:


  • Вместо функции htmlspecialchars мы ввели пользовательскую функцию htmlXspecialchars с поведением, аналогичным старому (см. здесь).
  • Функция htmlXspecialchars описана в classes/autoinc/utils.php – он подключается автоматически.

После этого в версии QS 4.5 v 00 мы поменяли все вхождения, которые нам казались адекватными, на новую функцию.
Естественно, мы что-то могли пропустить – из-за этого QS 4.5 v 00 мы называем бетой – мы не проверяли в ней все варианты поведения.


Из всего вышесказанного можно дать следующие рекомендации:

  • Если вы сильно перерабатывали ядро QS или просто планируете остаться на старой версии
    • ...но хотите использовать свежие модули (у вас не находится функция htmlXspecialchars),
      • то вам надо просто скопировать новый файл classes/autoinc/utils.php

  • Если у вас на новой версии QS не работают какие-то поля ввода, то проверьте, как в них фильтруются данные. Если что – поменяйте функцию на новую.