Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   WWW (http://mangos.ytdb.ru/forumdisplay.php?f=23)
-   -   [control panel] ACP - Панель управления учетными записями. (http://mangos.ytdb.ru/showthread.php?t=115)

Кот ДаWINчи 17.06.2010 07:50

На старых базах (работающих уже 2-3 года) есть такая беда.

Варианты проблемы:

1.
Всё это началось, когда в 3.0.9 (вроде в этой версии клиента) изменили порядок работы сервера с паролем и сессиями. дело заключается в том что некоторые ЛК старых версий некорректно обновляют пароль в базе. при смене пароля не стирается содержимое полей sessionkey, v, s. Из-за этого может возникнуть ситуация, когда в sha_pass_hash находится один пароль, а в сессии сервера остался другой. при таком раскладе в игру некоторое время будет пускать по второму паролю, а в ЛК по первому. Решение - просто остановить сервер и стереть содержимое у всех sessionkey, v, s. НО может получиться так, что у части пользователей будут утеряны их пароли. Можно попросить пользователей сменить пароль через консоль игры.

2.
Все аккаунты должны быть написаны в базе заглавными буквами. Это еще так с 2.4.3. И не желательно писать аккаунты русскими буквами.

В модулях регистрации и напоминания пароля АСР все эти нюансы уже учтены.

Lightunit 17.06.2010 08:37

Спасибо за ответ.

Так же, в Баг-трекере не отправляются сообщения с некоторыми элементами оформления текста. Например со смайлами.

Кот ДаWINчи 17.06.2010 08:40

Цитата:

Сообщение от Lightunit (Сообщение 8900)
Спасибо за ответ.

Так же, в Баг-трекере не отправляются сообщения с некоторыми элементами оформления текста. Например со смайлами.

баг-трекер не доделан. рекомендую пока отключить его через конфиг!

ddayver 19.06.2010 13:07

Вложений: 1
Цитата:

Сообщение от Кот ДаWINчи (Сообщение 493)
на 5.3 не работает. Буду смотреть изменения и править проект

Собственно переработка под 5.3.х + немного подчистило лишние пробелы (это не я, программка сама при сохранении :pardon: ) + рекомендую все же стартовать сессии в любом случае (к примеру у меня проверка на session_name() не прошла).

rsa 25.06.2010 20:48

Нет, ну это просто праздник какой-то... Такое впечатление что дыры в безопасности этого продукта напиханы специально :( Про некоторые я уже писал, вот еще (рев. крайний)
Код remember.php:
===
mysql_query('insert into `mail` (`random`, `account`, `email`, `mode`) values ("'.
...
$mail_code.'", '.$_POST['id'].', "'.$_POST['email']
$mail_body2 = '<a href="'.$http_mail.'">'.$http_mail.'</a>';
$post_mail = $_POST['email'];^
require("include/mailsend.php");
===
Долго создаем письмо с кодом на восстановление пароля, красивое письмо. И составляем его на тот id аккаунта и тот емейл, что нам пользователь в POST дал, а вовсе не на те значения, которые нами ранее в
$query = "SELECT * FROM `account` WHERE `email` like '".$_POST['email']."';";
получены..
Вывод - юзер подменяет форму и имеет восстановление пароля от любого аккаунта на любой емейл, и плевать что там в базе данных прописано.... Тем более что потом в процедуре проверке магиккода так же никаких проверок на валидность емейла не обнаружено :(

Кот ДаWINчи 25.06.2010 21:01

ПРОЕКТ ЗАКРЫТ.

т.е. разработка теперь идет чисто для себя.
===================================

На данный момент последние исправления все внесены в проект. Последняя ревизия 25 (на SVN).

Я занимаюсь новым проектом, в который позже буду переносить все наработки из данного АСР. Перенос будет производиться путем написания НОВОГО кода на основе идей из старых функций.

Дата публикации нового проекта не определена, т.к. сейчас я пишу свой движок, в котором пока созданы общеупотребительный функционал типа новостей, комментариев, ссылок, менюшек, шаблоны и модульно-панельная система размещения контента.

На вопросы по старому АСР отвечаю в данной теме.

Tag 19.09.2010 09:36

При переходе по ссылке для восстановления пароля пишет что ссылка уже устарела, прошу помощи. :thank_you:

Кот ДаWINчи 19.09.2010 16:03

1. проверь правильность таблицы mail в базе АСР.
2. 7 и 25 строчка modules/mail.php функция eregi в ПХП 5.3.х должна быть заменена на аналог.
3. ну и обновись до последней версии.

Lightunit 19.09.2010 16:16

Не рекомендую использовать восстановление пароля, т.к. есть риск взлома аккаунтов.

Дождитесь нового проекта от Кот ДаWINчи ;)

Кот ДаWINчи 19.09.2010 16:35

Цитата:

Сообщение от Lightunit (Сообщение 14262)
Не рекомендую использовать восстановление пароля, т.к. есть риск взлома аккаунтов.

этот участок кода в 25-й реве был переделан. проверка сделана.

Tag 20.09.2010 17:42

спс, первую проблему решил теперь еще одна ...
при восстановлении пароля через емайл после выбора аккаунта выдает "Вам запрещён доступ к этой странице!"

Кот ДаWINчи 20.09.2010 18:49

Цитата:

Сообщение от Tag (Сообщение 14284)
спс, первую проблему решил теперь еще одна ...
при восстановлении пароля через емайл после выбора аккаунта выдает "Вам запрещён доступ к этой странице!"

Цитата:

2. 7 и 25 строчка modules/mail.php функция eregi в ПХП 5.3.х должна быть заменена на аналог.
например, заменить eregi на mb_eregi.

или причина может крыться в том, что не выбирается из базы аккаунт в строке:
Код:

      $resM = mysql_query("SELECT `id`,`email` FROM `account` WHERE (`id`=".(int)$_POST['id'].") and (`email` LIKE '".$_POST['email']."') and (`active_realm_id` = 0) LIMIT 1;");
например, по тому что нет такого сочетания аккаунта и емайла, или потому что аккаунт в игре, или что-то не так с базой.

tempura 20.09.2010 21:49

Tag
Не пора ли начать приводить логи?

Кот ДаWINчи 21.09.2010 07:07


Mr.Grom 27.09.2010 12:15

Нет ограничения на число попыток входа, подбор пароля возможен любой прогой.

Праведник 27.09.2010 12:51

Цитата:

Сообщение от Mr.Grom (Сообщение 14532)
Нет ограничения на число попыток входа, подбор пароля возможен любой прогой.

ну вперёд :)
на брут любого мало мальски сложного пароля потратишь пол жизни =)))

selector 27.09.2010 13:09

Поставить капчу на вход и проблема решена.

tempura 27.09.2010 13:53

Цитата:

Сообщение от Праведник (Сообщение 14535)
ну вперёд :)
на брут любого мало мальски сложного пароля потратишь пол жизни =)))

Не так уж много современных посетителей инета знают что такое "сложность пароля", сколько им не долби это на всех углах. И в тоже время - школота через одного качает завирусованые бинарники "подбери пароль за пять минут", которые по словарям и правда вскроют пароль qwe123rty за кратчайшее время.

Кот ДаWINчи 27.09.2010 15:07

Mr.Grom, selector - Читаем пост 126

Переделывать в ЭТОМ проекте ничего уже не буду.

Кот ДаWINчи 29.10.2010 21:56

Впереди зима, а значит вечерами появится время поработать в ПХП. Уже решил, что постараюсь реализовать свой следующий проект, который плавно вытекает, и заимствует всё самое полезное из АСР. Это будет уже не "личный кабинет" а полноценный сайт со всеми функциями ЛК и еще много чем. Как будет называться - еще не решил, но точно не АСР3.

Рассмотрю все здравые идеи функционала для нового проекта. Пишите в этой теме.

ObeDve 29.10.2010 23:15

поддержка 2.4.3 будет или только 3++ ?

Кот ДаWINчи 30.10.2010 06:36

Цитата:

Сообщение от ObeDve (Сообщение 15542)
поддержка 2.4.3 будет или только 3++ ?

изначально планировал делать под 3.3.5, но сделать форк под 2.4.3 никогда не поздно.

KiriX 30.10.2010 11:24

Идеи у меня как всегда возникнут только тогда, когда удастся хоть что-то реально существующее пощупать =) Так что жду стартовый вариант ;)

Space77 03.11.2010 09:37

Случайно не оперой пользуетесь в качестве браузера.
Не уверен что именно так в данном случае, но если авторизация в АСР реализована на куках, причина в этой связке.

Кот ДаWINчи 03.11.2010 09:52

АСР использует стандартные сессии апача. БЕЗ куков. Данные о сессии хранятся в темп-папке сервера.

Код АСР проверялся на работу в IE(6,7,8), Opera (9,10) FF(2,3,4б), Safari, Crome и еще нескольких браузерах.

Space77, а к чему ваш пост? В ответ к какому посту?

Ginezes 09.11.2010 09:33

Цитата:

Скачать можно из официального репозитория проекта.
А где находится репозиторий?

Кот ДаWINчи 09.11.2010 09:37

Цитата:

Сообщение от Ginezes (Сообщение 15992)
А где находится репозиторий?

а тему надо читать всю! и там найдешь!

Ginezes 09.11.2010 09:51

Цитата:

Сообщение от Кот ДаWINчи (Сообщение 15993)
а тему надо читать всю! и там найдешь!

Спасибо!

Кот ДаWINчи 22.11.2010 21:01

Рева 26 ....
Код:

Внеплановая ревизия, чтобы не потерять былые труды.

acp:
- новая функция для работы с редактором (убирает начальные и концевые пробелы)
- проверка редакторов новостей, публикаций и багрепортов
- Косметические настройки в TINY_MCE
- обновлен дамп базы. (Чтобы прежние труды не пропали).
- обновлен список игровых зон для 333а и 335а

CharEdit:
- Новая версия под 333а и 335а
- исходники обновлены.


Fima 02.12.2010 11:25

Добрый день. В ходе освоения с ЛК возникло несколько вопросов. Прочитав всю тему, как вы советовали выше, часть устранил. Но вот главной - авторизации, так и не могу добиться.
Ситуация уже несколько раз описывалась в данной теме - "При попытке входа в ЛК ничего не происходит."
При этом никаких сообщений про ошибки не получаю, хотя в *.htaccess у меня стоит php_value display_errors On и в config.php включено отображение ошибок. Единственное внятное пояснение дали опять таки вы.
Цитата:

1.
Всё это началось, когда в 3.0.9 (вроде в этой версии клиента) изменили порядок работы сервера с паролем и сессиями. дело заключается в том что некоторые ЛК старых версий некорректно обновляют пароль в базе. при смене пароля не стирается содержимое полей sessionkey, v, s. Из-за этого может возникнуть ситуация, когда в sha_pass_hash находится один пароль, а в сессии сервера остался другой. при таком раскладе в игру некоторое время будет пускать по второму паролю, а в ЛК по первому. Решение - просто остановить сервер и стереть содержимое у всех sessionkey, v, s. НО может получиться так, что у части пользователей будут утеряны их пароли. Можно попросить пользователей сменить пароль через консоль игры.
2.
Все аккаунты должны быть написаны в базе заглавными буквами. Это еще так с 2.4.3. И не желательно писать аккаунты русскими буквами.
Но нюанс заключается в том, что база создавалась неделю назад при помощи скриптов уважаемого rsa, а аккаунты создаются при помощи этого же ЛК. То есть, как мне кажется на грабли описанные вами я не наступаю.

Единственное сообщение о ошибке, которое мне удалось отловить, выдается при регистрации аккаунта, оно имеет вид:
Цитата:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /misc/www/wow/public_html/lk/menu.php:54) in /misc/www/wow/public_html/lk/modules/reg.php on line 56
Логика подсказывает, что и про это в данной теме говорилось, но поскольку в Web серверах я не силен, то решил уточнить у вас
Цитата:

Нет дело не в этом. отсылка заголовка происходит из-за первой ошибки. А первая ошибка из-за того, что сервер не может создать или запустить сессию. и начинает запускать ее, используя куки. Чтобы этого не происходило, надо создать папку для временных файлов, где будут храниться файлы-сессий. И внести изменения в конфиги апача или пхп, чтобы всё заработало.
Это мой вариант или нужно искать в другой области?

Кот ДаWINчи 02.12.2010 12:37

Цитата:

Это мой вариант или нужно искать в другой области?
Это может быть одна из причин.

вторая - файлы в UTF8 кодировке с BOM. Если конфиг правили виндовым блокнотом, то так оно и есть.

Fima 02.12.2010 14:46

Прошелся по всей директории программкой utf8-bom-remover.exe гарантировано нет BOM.
Создал временный директорий /tmp (права на папке 777) и поправил в
php.ini согласно гайда по настройке apache+mysql+php5
Код:

session.save_path = "/tmp"
session.save_handler = files
session.cache_limiter = public
session.cookie_path = "/tmp"
variables_order = EGPCS

Может я какие еще переменные пропустил в конфиге ?
Имеет-ли значение ОС под которой это все происходит? Платформа работает на OpenSuse 11.3.

Кот ДаWINчи 02.12.2010 19:30

Цитата:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /misc/www/wow/public_html/lk/menu.php:54) in /misc/www/wow/public_html/lk/modules/reg.php on line 56
Судя по этим строчкам, ошибка происходит на строке (56):

PHP код:

 if (!isset($_REQUEST... 

Попробуйте ее закомментировать. Слышал, что в последних версиях php изменили логику старта сессии.

Imitator 02.12.2010 20:05

Комментирование помогло, ошибка ушла, создание аккаунта проходит успешно. Осталось преодолеть последнее
Цитата:

Ситуация уже несколько раз описывалась в данной теме - "При попытке входа в ЛК ничего не происходит."
Попробую по аналогии с вашей идеей
Цитата:

... Слышал, что в последних версиях php изменили логику старта сессии.
Поставить ЛК на более старый web-сервер, а вдруг ... :)

Чуть позже ...
Запустил на xampp-win32-1.7.1 свежескачанный ЛК, ни одной проблемы или сообщения не видно, кроме отсутствия возможности логина в этот ЛК, то есть страница "моргает" и снова стартовая страница входа в ЛК.
Все сообщения о ошибках на web-сервере включены, и, подозреваю, в момент "моргания" страницы, нужные сообщения могут показываться, но вот как добраться до них. Бум читать логи апача.

И еще попозжа...
Чтение логов Apache ни к чему не привело, в имеющихся 2-х log-файлах, ...-error_log и ...-access_log, кроме ошибок получения доступа к несуществующим файлам (недельной давности) ничего. :(
Но вот анализ HTTP заголовков, которыми обменивается браузер с сервером наталкивает на мысль. Итак при нажатии на кнопочку "Войти" имеем следующее
Код:

NO.        TimeStart        Duration(s)        Method        Result        Received        Type        URL        RedirectURL
46        02.12.2010 22:03:54        0.00        POST                0        (None)        http://localhost/ACP/index.php?modul=static&id=1       
47        02.12.2010 22:03:58        1.97        GET        200        4493        (None)        http://localhost/ACP/index.php?modul=static&id=1       
48        02.12.2010 22:04:00        0.00        GET        304        2707        application/octet-stream        http://localhost/ACP/lkstyle.css       
49        02.12.2010 22:04:00        0.00        POST                0        (None)        http://toolbarqueries.clients.google.com/tbproxy/af/query       
50        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/skins/standart/logo.jpg       
51        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/images/admin.png       
52        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/images/letter.png       
53        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/images/links/wowhead.gif       
54        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/images/tree.gif       
55        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/skins/standart/tl.jpg       
56        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/skins/standart/tm.jpg       
57        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/skins/standart/tr.jpg       
58        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/skins/standart/l.jpg       
59        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/skins/standart/r.jpg       
60        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/skins/standart/bl.jpg       
61        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/skins/standart/bm.jpg       
62        02.12.2010 22:04:00        0.00        GET        304        293        application/octet-stream        http://localhost/ACP/skins/standart/br.jpg

Первые сточки модуля static.php имеют вид:
Код:

if (isset($_GET['id']) and ($_GET['id'] > 0)) {
  $k_connect = mysql_connect($k_ip, $k_userdb, $k_pw);
  mysql_select_db($k_db, $k_connect);
  mysql_query("SET NAMES '$encoding'");
  $res = mysql_query("SELECT * FROM `static` where `id` = ".$_GET['id']." limit 1") or trigger_error(mysql_error());

Значит ли это, что далее, чем авторизация на MYSQL процесс не идет?

Кот ДаWINчи 03.12.2010 06:52

Цитата:

Запустил на xampp-win32-1.7.1 свежескачанный ЛК, ни одной проблемы или сообщения не видно, кроме отсутствия возможности логина в этот ЛК, то есть страница "моргает" и снова стартовая страница входа в ЛК.
Все сообщения о ошибках на web-сервере включены, и, подозреваю, в момент "моргания" страницы, нужные сообщения могут показываться, но вот как добраться до них. Бум читать логи апача.
В выходные поставлю себе на ноутбук такой же XAMPP и проверю на сайте из последней ревы репозитория.

Цитата:

Значит ли это, что далее, чем авторизация на MYSQL процесс не идет?
А таблица static имеет хоть одну запись? Сейчас смоделирую такую ситуацию. Может я забыл проверку на пустой список статических материалов сделать.:blush::blush::blush:

Imitator 03.12.2010 07:01

Цитата:

А таблица static имеет хоть одну запись? Сейчас смоделирую такую ситуацию. Может я забыл проверку на пустой список статических материалов сделать.:blush::blush::blush:
Имеет, 1-ну
Код:

1        Правила сервера        Правила        <p>Главное правило - адекватность.</p>        0        2009-10-13 09:03:52

Кот ДаWINчи 03.12.2010 12:49

посмотрел: static.php ну ни как не может влиять на регистрацию. Даже если таблица пустая.

Придется сесть и почитать как сейчас на свежих apache и php реализована работа с сессиями. Напишу примочку, которая в корне изменит работу АСР.

Сессия будет запускаться всегда и безусловно. А проверка будет осуществляться по наличию необходимых переменных в сессии.

Ждите, к понедельнику переделаю.

Кот ДаWINчи 05.12.2010 19:26

рева 27 залита. Тестируйте.

Imitator 05.12.2010 20:18

Прошу прощения, а в репозиториях проекта не произошло никаких изменений ? До текущего момента можно было подключиться и просмотреть при помощи Repo-Browser, а сейчас ни к одному из каталогов без пароля не пускает даже для чтения.

Кот ДаWINчи 05.12.2010 20:44

Вложений: 1
Жадные буржуи.... :ireful2: отменили бесплатный тариф для репозитория. Просят $50.

Цитата:

You've reached the limit of repositories for this plan. You may want to upgrade to the next plan.
Переезжаем. Только куда? :search:

-----------------------
Пока вот архив...
Подумываю про свой собственный блог.


Текущее время: 13:57. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS