Проблема с одноразовой ссылкой, нужны идеи
Прислано: axel
сб, 20/03/2010 - 00:04
Время от времени на webmaster@drupal.ru приходили жалобы о не работе одноразовой ссылки при смене пароля. После массовой смены паролей в феврале жалобы повалились пачками, уже больше сотни писем с подобной проблемой. Мне эту ошибку не получилось воспроизвести. По багрепортам пришёл к выводу, что ошибка не завязана на конкретный броузер или ОС. См. ниже как это выглядит в логах на примере конкретного пользователя (IP и мейл скрыты). По логу видно, что запрашивается пароль, затем переход по ссылке, судя по логу успешный, авторизация пользователя, и далее пользователь получает access denied на странице редактирования своего аккаунта.
Выглядит похоже на давние траблы http://dag.wieers.com/blog/drupal-password-reset-and-transparent-proxies и http://drupal.org/node/24398, но это вроде давно пофиксено. В общем причина проблемы неясна, хотя похоже связана с cookies. Жду ваших идей. Также было бы шикарно заполучить лог обмена броузера с drupal.ru где эта ошибка воспроизводится - может быть кто из напоровшихся на эту траблу пользуется wireshark? - сохраненный в нем дамп обмена был бы очень полезен.
Для справки, восстановлением паролей заведует user_pass_reset() в user.module/user.pages.inc.
Ниже пример лога запроса пароля на drupal.ru:
Mar 19 23:18:49 [drupal] http://drupal.ru|1269029929|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/password|http://drupal.ru/user/password|0||Password reset instructions mailed to podpole at xxxx@xxxx.xx. Mar 19 23:19:24 [drupal] http://drupal.ru|1269029964|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269029929/718e8a50b76a70ca0cf161fd5239cf99/login|http://drupal.ru/user/reset/19256/1269029929/718e8a50b76a70ca0cf161fd5239cf99|0||User podpole used one-time login link at time 1269029929. Mar 19 23:19:24 [drupal] http://drupal.ru|1269029964|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269029929/718e8a50b76a70ca0cf161fd5239cf99/login|http://drupal.ru/user/reset/19256/1269029929/718e8a50b76a70ca0cf161fd5239cf99|19256||Session opened for podpole. Mar 19 23:19:25 [drupal] http://drupal.ru|1269029965|access denied|XXX.XXX.XXX.XXX|http://drupal.ru/user/19256/edit|http://drupal.ru/user/reset/19256/1269029929/718e8a50b76a70ca0cf161fd5239cf99|0||user/19256/edit Mar 19 23:20:23 [drupal] http://drupal.ru|1269030023|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/password|http://drupal.ru/user/password|0||Password reset instructions mailed to podpole at xxxx@xxxx.xx. Mar 19 23:20:35 [drupal] http://drupal.ru|1269030035|user|XXX.XXX.XXX.XXX|http://drupal.ru/user|http://drupal.ru/user|0||Login attempt failed for podpole. Mar 19 23:21:04 [drupal] http://drupal.ru|1269030064|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269030023/4363ca4dfe004983bc2890c652346990/login|http://drupal.ru/user/reset/19256/1269030023/4363ca4dfe004983bc2890c652346990|0||User podpole used one-time login link at time 1269030023. Mar 19 23:21:04 [drupal] http://drupal.ru|1269030064|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269030023/4363ca4dfe004983bc2890c652346990/login|http://drupal.ru/user/reset/19256/1269030023/4363ca4dfe004983bc2890c652346990|19256||Session opened for podpole. Mar 19 23:57:13 [drupal] http://drupal.ru|1269032233|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/password|http://drupal.ru/user/password|0||Password reset instructions mailed to podpole at xxxx@xxxx.xx. Mar 19 23:58:25 [drupal] http://drupal.ru|1269032305|access denied|XXX.XXX.XXX.XXX|http://drupal.ru/user/19256/edit||0||user/19256/edit Mar 19 23:58:29 [drupal] http://drupal.ru|1269032309|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269032233/71d28a751d734b45d4463830fc33ce4f/login|http://drupal.ru/user/reset/19256/1269032233/71d28a751d734b45d4463830fc33ce4f|0||User podpole used one-time login link at time 1269032233. Mar 19 23:58:29 [drupal] http://drupal.ru|1269032309|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269032233/71d28a751d734b45d4463830fc33ce4f/login|http://drupal.ru/user/reset/19256/1269032233/71d28a751d734b45d4463830fc33ce4f|19256||Session opened for podpole. Mar 19 23:59:33 [drupal] http://drupal.ru|1269032373|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/password|http://drupal.ru/user/password|0||Password reset instructions mailed to podpole at xxxx@xxxx.xx. Mar 19 23:59:51 [drupal] http://drupal.ru|1269032391|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269032373/525a9ad4b4b9d424f33ec5139e27f288/login|http://drupal.ru/user/reset/19256/1269032373/525a9ad4b4b9d424f33ec5139e27f288|0||User podpole used one-time login link at time 1269032373. Mar 19 23:59:51 [drupal] http://drupal.ru|1269032391|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269032373/525a9ad4b4b9d424f33ec5139e27f288/login|http://drupal.ru/user/reset/19256/1269032373/525a9ad4b4b9d424f33ec5139e27f288|19256||Session opened for podpole. Mar 20 00:00:52 [drupal] http://drupal.ru|1269032452|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/password|http://drupal.ru/user/password|0||Password reset instructions mailed to podpole at xxxx@xxxx.xx. Mar 20 00:01:05 [drupal] http://drupal.ru|1269032465|user|XXX.XXX.XXX.XXX|http://drupal.ru/user|http://drupal.ru/user|0||Login attempt failed for podpole. Mar 20 00:01:57 [drupal] http://drupal.ru|1269032517|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269032452/329f8465ff511db76adfe485788e6659/login|http://drupal.ru/user/reset/19256/1269032452/329f8465ff511db76adfe485788e6659|0||User podpole used one-time login link at time 1269032452. Mar 20 00:01:57 [drupal] http://drupal.ru|1269032517|user|XXX.XXX.XXX.XXX|http://drupal.ru/user/reset/19256/1269032452/329f8465ff511db76adfe485788e6659/login|http://drupal.ru/user/reset/19256/1269032452/329f8465ff511db76adfe485788e6659|19256||Session opened for podpole. Mar 20 00:01:57 [drupal] http://drupal.ru|1269032517|access denied|XXX.XXX.XXX.XXX|http://drupal.ru/user/19256/edit|http://drupal.ru/user/reset/19256/1269032452/329f8465ff511db76adfe485788e6659|0||user/19256/edit
- axel's blog
- Для комментирования войдите или зарегистрируйтесь
Есть пока одна догадка, но я не уверен.
Может пока тупо похакать функцию, чтобы иметь больше информации?
- Для комментирования войдите или зарегистрируйтесь
Точнее думается мне, что виновата не user_pass_reset(), а user_authenticate_finalize() и вызов sess_regenerate() в частности, мне кажется, что мы банально не можем получить
$old_session_id = session_id();
Есть идеи как это проверить
- Для комментирования войдите или зарегистрируйтесь
Есть идеи как это проверить
Это вопрос или утверждение? :) У меня пока нет идей, т.к. от меня через трёх провайдеров функция восстановления пароля работает ОК. Нужно проверять из места, где это не срабатывает.
- Для комментирования войдите или зарегистрируйтесь
Это утверждение.
Но мне фтп никто не даст
- Для комментирования войдите или зарегистрируйтесь
Это утверждение.
Но мне фтп никто не даст
На продуктив drupal.ru больше не будет никаких ftp и ssh, сорри, но проблем потом больше :) Но я подниму несколько копий сайта с аналогичной конфигурацией - на них будут даны права желающих проводить доработку drupal.ru. Можно также поднять тестовые площадки с чистым друпалом. Отработанные изменения будут переноситься на рабочий сайт.
- Для комментирования войдите или зарегистрируйтесь
Ок. Ждёмс
- Для комментирования войдите или зарегистрируйтесь
виновата смена алгоритма авторизации по кукам с 6.17 версии
все дело в точки
- Для комментирования войдите или зарегистрируйтесь
сб, 20/03/2010 - 03:04
Дата поста кагбе ласково намекае что до 6.17 жить и жить, проблема давняя
- Для комментирования войдите или зарегистрируйтесь
ну сорь не посмотрел
Но с такой же проблемой сталкивался, виновата была именно точка
- Для комментирования войдите или зарегистрируйтесь



Комментарии