+0.45
Рейтинг
0.50
Сила

Сиськи и клон хабра

Собственно вопрос — нельзя ли в дистрибутиве заменить подсказку для меток на что-то более культурное. Иногда встречаю достаточно серьезные сайты с ЛС, администраторы которых видимо не обращали внимания/не знают как это поменять.

Плохое решение ошибки в хаке "Запрос инвайта"

Проблема, как все наверное уже поняли, в файле /include/ajax/inviteRequest.php
Ищем

if ($email=='') {
	die('-1');
}

Все что после — удаляем. Видимо код был под прошлую ревизию, SendTalk метода я что-то вообще не нашел.

$email = mysql_real_escape_string($email);
mysql_query('INSERT INTO `prefix_talk` (user_id, talk_title,talk_text) VALUES(1,"Запрос инвайта", "'.$email.'")');
mysql_query("INSERT INTO `prefix_talk_user` (`talk_id` , `user_id` , `date_last` ) VALUES ('". mysql_insert_id(). "', '1', NULL);");
echo 'Success'; //хотя бы пару символов для того чтобы аякс понял, что все хорошо
<code>

Подскажите как правильно работать с oTalk - перепишем культурно :)

XSS уязвимость в модуле Админпанель < 1.2

Данная уязвимость работает в модуле Админпанель 1.2, вкладка Пользователи -> Список.
Справа от списка пользователей предлагается отправить письмо (новое или выбрать из старых).
В старых javascript в темах сообщений никак не фильтруется.

Например

	<select name="talk_inbox_list" id="talk_inbox_list" onchange="AdminMessageSelect();">
		<option value="0">-- Новое письмо --</option>
		<option value="1">test <script>alert('1')</script></option>
	</select>

Проблема с serialize и __sleep

Как всем наверное известно в РНР5 перед сериализацией объекта вызывается __sleep.
В исходном коде движка ни одного слипа я не нашел. Но, что происходит внутри — удивляемся:
Дело в кеше доходит до сериализации и вызывается __sleep, функции, которой в ни в одном классе нет.
После этого делается TopicEntity_Topic->__call('__sleep', Array) — видимо где-то стоит какой-то хук на вызов неизвестных функций. И пошло-поехало —

	/**
	 * Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля
	 */
	public function __call($sName,$aArgs) {
		return $this->oEngine->_CallModule($sName,$aArgs);
	}

Модуль не находится, лезут ошибки, эксепшены и т.п.
Вопрос — как на PHP5 нормально настроить кеширование? Как убрать все эти псевдо-нужные хуки (а они видимо здорово по коду раскиданы)?

Ниже собственно трасер ошибки:

<b>Fatal error</b>:  Uncaught exception 'Exception' with message 'Не найден класс модуля - ' in /var/www/web674/web/classes/engine/Engine.class.php:97
Stack trace:
#0 /var/www/web674/web/classes/engine/Engine.class.php(97): Engine::LoadModule()
#1 /var/www/web674/web/classes/engine/Engine.class.php(185): Engine->LoadModule('', true)
#2 /var/www/web674/web/classes/engine/Entity.class.php(61): Engine->_CallModule('__sleep', Array)
#3 /var/www/web674/web/classes/modules/sys_cache/Cache.class.php(129): TopicEntity_Topic->__call('__sleep', Array)
#4 /var/www/web674/web/classes/modules/sys_cache/Cache.class.php(129): TopicEntity_Topic->__sleep()
#5 /var/www/web674/web/classes/modules/sys_cache/Cache.class.php(129): serialize(Array)
#6 /var/www/web674/web/classes/engine/Engine.class.php(189) : eval()'d code(1): LsCache->Set(Array, 'topic_filter_a:...', Array, 300)
#7 /var/www/web674/web/classes/engine/Engine.class.php(189): eval()
#8 /var/www/web674/web/classes/engine/Module.class.php(37): Engine->_CallModule('Cache_S in <b>/var/www/web674/web/classes/engine/Engine.class.php</b> on line <b>97</b><br />