Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[3.1][3.2] Удивительные комментарии от команды валидаторов

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
alex_qrlogin
phpBB 2.0.1
Сообщения: 274
Стаж: 6 лет 8 месяцев
Благодарил (а): 26 раз
Поблагодарили: 6 раз
Контактная информация:

[3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение alex_qrlogin »

Добрый день

Прошу совет, а то я как то растерялся от рекомендаций валидаторов официалов...

Вот такая функция:

Код: Выделить всё

	public function ajax()
	{
		$sid = md5('qrlogin' . $this->user->session_id);
		$sql_where = ' WHERE ' . $this->db->sql_build_array('SELECT', ['sid' => $sid]);

		$poll_lifetime = $this->config['qrlogin_poll_lifetime'];

		// waiting for login - max $poll_lifetime s
		while (!$uid = $this->get_field_session('uid', $sql_where))
		{
			if (--$poll_lifetime < 0)
			{
				return new Response('', 200);
			}
			sleep(1);
			if (connection_aborted())
			{
				return new Response('', 200);
			}
		}

		// received uid for login - Session creation
		$res = $this->user->session_create($uid, false, false, true);

		// set login status for qrLogin post to 200 or 403 - Forbidden
		$sql = 'UPDATE ' . $this->qrlogin_table . ' SET ' . $this->db->sql_build_array('UPDATE', ['result' => ($res ? 200 : 403)]) . $sql_where;
		$this->db->sql_query($sql);

		// answer to ajax with '1' for reload page if OK
		return new Response($res ? '1' : '', 200);
	}
и вот такой к ней комментарий:
This is security through obscurity, it doesn't make the system any safer. You could be using the session ID itself just as well. However, you make the session ID act like an authentication token which is not what the session ID should be used for. Please generate your own token in a secure way.
If I get hold of a session ID from another user and GET /qrlogin_ajax?sid=$sid before he does, I am logged in to his account. This is what I meant by saying you use the session ID as an authentication token, and it's a severe security problem.
Это реально? session_id phpBB меняется таким GET??? Или он не знает что там придумать еще? Моя функция явно никаких параметров не использует...

И второе:

Код: Выделить всё

$.ajax({
	url: "./qrlogin_ajax",
Line 7: mentioning this now for the 4th time: you must generate this URL in PHP using the router helper service's route() method.
For example, boards with URL rewriting disabled will throw an error when requesting the URL in the code above. We have good reasons when asking you to do things in certain ways.
Это обращение из Javascript. Фантазии его? Ведь все ресурсы с сайта через точку грузятся и никаких проблем
Действительно при включении этого режима Javascript не будет знать адрес странички??
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение Татьяна5 »

alex_qrlogin писал(а): 23.10.2017 10:27session_id phpBB меняется таким GET???
Для гостей - да
(Как это влияет на безопасность в данном случае что-то не пойму)
alex_qrlogin писал(а): 23.10.2017 10:27Действительно при включении этого режима Javascript не будет знать адрес странички??
Точней, при отключении в админке. Да, тогда адрес будет другим, ./app.php/qrlogin_ajax, а старый выдаст 404
Аватара пользователя
alex_qrlogin
phpBB 2.0.1
Сообщения: 274
Стаж: 6 лет 8 месяцев
Благодарил (а): 26 раз
Поблагодарили: 6 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение alex_qrlogin »

Татьяна5 писал(а): 23.10.2017 10:40Для гостей - да
(Как это влияет на безопасность в данном случае что-то не пойму)
ну и ну)) гость может сам себе устанавливать идентификатор сессии - вот так придумали))
надо таки менять на стандартный идентификатор сессии пхп - им так не поиграешься)))
Татьяна5 писал(а): 23.10.2017 10:40Точней, при отключении в админке. Да, тогда адрес будет другим, ./app.php/qrlogin_ajax, а старый выдаст 404
я включал-выключал - все нормально отрабатывает - никаких 404 - мне же все равно как - надо что бы в мою функцию вызов переправлялся и все
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение Татьяна5 »

alex_qrlogin писал(а): 23.10.2017 10:56все нормально отрабатывает
Не может. При отключённом url rewriting страницы /qrlogin_ajax не существует
Аватара пользователя
alex_qrlogin
phpBB 2.0.1
Сообщения: 274
Стаж: 6 лет 8 месяцев
Благодарил (а): 26 раз
Поблагодарили: 6 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение alex_qrlogin »

Татьяна5 писал(а): 23.10.2017 11:00Не может. При отключённом url rewriting страницы /qrlogin_ajax не существует
ну не знаю - я в админке отключал и все работает прекрасно

кстати проверил GET /qrlogin_ajax?sid=$sid - тоже не приводит к смене session_id

странно все это...
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение Sumanai »

alex_qrlogin писал(а): 23.10.2017 10:56надо таки менять на стандартный идентификатор сессии пхп - им так не поиграешься)))
Легче простого.
Аватара пользователя
alex_qrlogin
phpBB 2.0.1
Сообщения: 274
Стаж: 6 лет 8 месяцев
Благодарил (а): 26 раз
Поблагодарили: 6 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение alex_qrlogin »

Да
Почитал уже
Пхп тот еще шедевр похоже
Никакой идентификации откуда запрос нету похоже
Или я не нашел просто?

Отправлено спустя 1 минуту 18 секунд:
В принципе я уже придумал как это все обойти — генерить на js на компе пользователя случайное число и его и использовать как идентификатор
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение Sumanai »

alex_qrlogin писал(а): 23.10.2017 16:36Пхп тот еще шедевр похоже
При чём тут PHP, когда тупо на стороне пользователя может творится что угодно, и ей в принципе нельзя доверять?
Аватара пользователя
alex_qrlogin
phpBB 2.0.1
Сообщения: 274
Стаж: 6 лет 8 месяцев
Благодарил (а): 26 раз
Поблагодарили: 6 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение alex_qrlogin »

что значит твориться что угодно?
речь о идентификации сеанса-коннекта
если он идентифицируется только по кукам, то...
Аватара пользователя
Sumanai
phpBB 3.0.0 RC5
Сообщения: 1668
Стаж: 9 лет 4 месяца
Благодарил (а): 267 раз
Поблагодарили: 216 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение Sumanai »

alex_qrlogin писал(а): 23.10.2017 18:12что значит твориться что угодно?
То и значит. Я могу записать что угодно в куки, в форму POST, в запрос GET, поиграть с яваскриптом.

Хотя в данном случае причину мозгоклёпства не пойму- если злоумышленнику известен SID пользователя, то он и так может зайти от его имени и делать что угодно.
Аватара пользователя
alex_qrlogin
phpBB 2.0.1
Сообщения: 274
Стаж: 6 лет 8 месяцев
Благодарил (а): 26 раз
Поблагодарили: 6 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение alex_qrlogin »

это я тоже уже понял)) по сути они в качестве претензий выдвигают дыры phpBB и пхп... ну или не дыры а просто известные "особенности"))
ну я все равно переделаю - мне же проще)) в жабаскрипте сгенерил случайное число, включил его в qrcode в качестве идентификатора и Ajax с ним дергаю...
на одну переменную в жабаскрипт меньше передавать))

Отправлено спустя 38 секунд:
а причина у них крайне проста
Аватара пользователя
alex_qrlogin
phpBB 2.0.1
Сообщения: 274
Стаж: 6 лет 8 месяцев
Благодарил (а): 26 раз
Поблагодарили: 6 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение alex_qrlogin »

продолжаю пытаться удовлетворить валидаторов(((

Код: Выделить всё

$.ajax({
	url: "./qrlogin_ajax",
отрабатывает всегда без каких то проблем

а вот с $this->helper->route как не понятно((
$this->helper->route('qrlogin_qrlogin_ajax', array(), false, false, UrlGeneratorInterface::ABSOLUTE_PATH) возвращает /phpbb/qrlogin_ajax при включенном URL Rewriting и /phpbb/app.php/qrlogin_ajax при выключенном
и как из этого получить урл для вызова? что то не так делаю? почему не возвращает домен?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение rxu »

А зачем вам теперь домен, если в вашем исходном коде его нет?
Изображение
Аватара пользователя
alex_qrlogin
phpBB 2.0.1
Сообщения: 274
Стаж: 6 лет 8 месяцев
Благодарил (а): 26 раз
Поблагодарили: 6 раз
Контактная информация:

Re: [3.1][3.2] Удивительные комментарии от команды валидаторов

Сообщение alex_qrlogin »

Точка и есть домен по сути
Но я уже решил это — надо вместо ABSOLUTE_PATH писать ABSOLUTE_URL
Ответить

Вернуться в «Для разработчиков»