Проверка наличие security-ключа в сессии

engine/modules/security/Security.class.php

/**
	 * Проверяет наличие security-ключа в сессии
	 *
	 * @param null|string $sCode	Код для проверки, если нет то берется из реквеста
	 * @return bool
	 */
	public function ValidateSessionKey($sCode=null) {
		if(!$sCode) $sCode=getRequest('security_ls_key');		
		return ($sCode==$this->GenerateSessionKey()); //TRUE никогда не возвратит?
	}


Соответственно тут валиться
/**
	 * Производит валидацию отправки формы/запроса от пользователя, позволяет избежать атаки CSRF
	 */
	public function ValidateSendForm() {
		if (!($this->ValidateSessionKey())) {
			die("Hacking attemp!");
		}
	}


Гуглил по запросу «livestreet Hacking attemp», тем много, все читать лень, но как понимаю возможно проблемы связанные.

p.s.
'Hacking attemp!' != 'Hacking attempt!'

19 комментариев

avatar
Суть бага в чем?
  • ort
  • 0
avatar
На любое действие (например отправка формы ajax'ом) ответ Hacking attemp!
avatar
значит ключ не совпадает
avatar
Он никогда не совпадает получается, в этом и проблема. Я могу показать на реальном сервере если нужно.
avatar
нужно дебажить, выводить сравниваемые значения(+сессии) и смотреть, что не так
avatar
А вас не смущает метод ValidateSessionKey()? Давайте разберем его по шагам:
1) При валидации формы вызывается метод ValidateSessionKey для проверки security_ls_key
2) Параметр security_ls_key передается в форме и получаем его методом getRequest
3) далее делаем return ($sCode==$this->GenerateSessionKey());

тоесть наш переданный security_ls_key сравниваем с тем что возвратит GenerateSessionKey().

Наш переданный security_ls_key разумеется будет отличаться от того что заново сгененирует GenerateSessionKey(). Тоесть return ($sCode==$this->GenerateSessionKey()); всегда будет возвращать FALSE. Тоесть валидация нашего security_ls_key никогда не пройдет.
avatar
Сообщество livestreet уже 4 года пользуется не работающим движком. здорово, браво!

разумеется будет отличаться от того что заново сгененирует GenerateSessionKey()


GenerateSessionKey всегда должен возвращать тот же кэш, тк Session_GetId возвращает тот же id.
avatar
хэш естесственно
avatar
тролите?

return ($sCode==$this->GenerateSessionKey()); //TRUE никогда не возвратит?

возвратит.
Наш переданный security_ls_key разумеется будет отличаться от того что заново сгененирует GenerateSessionKey().
заново? бред.
avatar
вы код
GenerateSessionKey
смотрели?
avatar
совпадает и всегда
avatar
у вас проблемы с сессиями
avatar
Да, я заметил, посмотрите пожалуйста скриншот
clip2net.com/s/2tAop

может проблема в этом?
avatar
да. смотрю.
все разные ключи как и должно быть.
avatar
Поясняют прямо — эта опечатка ни на что не влияет :)
avatar
опечатка то мелочи
avatar
Из шаблона ничего не удаляли?
avatar
а причем здесь шаблон? Из него инчего не удалял.
avatar
т.к в шаблоне security_key


<script type="text/javascript">
		var DIR_WEB_ROOT 			= 'http://livestreet.ru';
		var DIR_STATIC_SKIN 		= 'http://livestreet.ru/templates/skin/synio';
		var DIR_ROOT_ENGINE_LIB 	= 'http://livestreet.ru/engine/lib';
		var LIVESTREET_SECURITY_KEY = '87b3ae9588ceeb794f3160834f0fd68';
		var SESSION_ID				= 'nq822fk9v2g0ji48um920gvb5';
		var BLOG_USE_TINYMCE		= '';
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.