up
ГлавнаяБлогБезопасностьЖелезоПрограммированиеАдминистрирование
DebianCPUFreeBSDBenchmarkRAMLinuxBashMySQLHDDCentOSSSDPHPHTMLPerl

Популярные статьи
Категория “Программирование

Обновление PHP для старых версий DLE >= 9.5

Любую CMS и DLE в т.ч. необходимо держать всегда обновленной или хотя бы из последних версий. Так как довольно часто новые версии выходить не из-за дополнительных функций, а из-за найденных уязвимостей и необходимости их устранения.

Аналогично поступают и хостеры, стараясь держать актуальные версии ПО.

Но как быть, если PHP версии 5.3/5.4, а DLE староват и отказывается работать на современном ПО? Давайте решим этот вопрос. 
Основное и очень существенное отличие PHP 5.3/5.4  в том что изменена дефолтная кодировка функции htmlspecialchars из ISO-8859-1 на UTF-8. В итоге мы получаем нерабочую админку, без возможности редактировать новости. Для исправления внесите изменения в файл engine/inc/editnews.php указав кодировку ISO-8859-1, например код:

htmlspecialchars( $_REQUEST['author'] )

меняем на

htmlspecialchars( $_REQUEST['author'], ENT_NOQUOTES, 'ISO-8859-1' )

А код

htmlspecialchars( stripslashes( urldecode( $_REQUEST['search_field'] ) ), ENT_QUOTES ) )

на

htmlspecialchars( stripslashes( urldecode( $_REQUEST['search_field'] ) ), ENT_QUOTES, 'ISO-8859-1') )

Аналогично в файле engine/classes/parse.class.php

Следующее что необходимо исправить - это создание дамба базы. Для этого в файле engine/inc/dumper.php меняем уж очень устаревшую и бесполезную функцию mysql_escape_string на mysql_real_escape_string.

Правда по последнему напрашивается вопрос к разработчикам скрипта: если все данные, принимаемые от пользователя предварительно фильтрируются то зачем их при создании резервной копии фильтровать повторно?! (риторический вопрос, который наводит на нехорошие мысли).

Также стоит отметить совершенно неразумное использование функционала PHP. При наличии такой библиотеки как PDO-mysql создатели скрипта используют классический подход к обработке sql-запросе, но при этом создают на все полностью классы и функции, что собственно реализовано в самом pdo. Какой то непонятный стиль написания скрипта.

 

Эти же операции повторяем в файлах:
engine/inc/question.php
engine/ajax/templates.php или engine/inc/templates.php
engine/inc/editvote.php
engine/inc/banners.php

 

Для DLE версии 9.0 в файле engine/modules/sitelogin.php
комментируем строку @session_register( 'member_lasttime' );

Sunday, 17 August 2014, 18:48Прочитано 42 раза
Ссылка на страницу:

comments powered by Disqus

Чаще всего ищут

Статистика блога
Статтей: 177
Безопасность: 9
Железо: 19
Программирование: 14
Администрирование: 134