Используйте учетные данные для входа на PHPBB2 на моем сайте
-
08-07-2019 - |
Вопрос
В настоящее время я использую форум PHPBB2 для раздела одного из моих сайтов, и я хотел бы расширить этот сайт (добавить новые страницы, скрипты и т.д.).Я хотел бы ограничить доступ к этим страницам пользователям, уже вошедшим в систему на форуме PHPBB2.
На самом деле, если бы только члены определенной группы могли получить доступ к этим страницам, это было бы здорово.
Есть ли способ использовать те же учетные данные для входа на остальной части моего сайта и проверить, из каких групп принадлежат участники?
Спасибо
(кстати, эти страницы написаны на PHP)
Решение
Если пользователь вошел в PHPBB, есть хороший шанс, хотя и не всегда вероятный, что после этого у него появится файл cookie, который вы сможете прочитать и помочь проверить, кто есть кто, по базе данных.
В этом случае вам нужно будет разломать крошки от печенья ниже:
$_COOKIE["phpbb2mysql_data"]
Давайте воспользуемся примером и рассмотрим его, чтобы найти данные, которые нам нужны для запроса к базе данных.Ниже приведен фрагмент, найденный в приведенном выше файле cookie:
a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"3";}
Для этого вам нужно будет зайти и извлечь ту цифру "3", которая соответствует вошедшему в систему пользователю PHPBB.
Отмените сериализацию этих данных чтобы выдернуть этот идентификатор пользователя:
$goo = unserialize($_COOKIE["phpbb2mysql_data"]);
$extracted_id = $goo["userid"];
(Благодаря эпохальный волк указав на приведенную выше сериализованную форму этого файла cookie)
Этот номер будет полезен для проверки базы данных, чтобы проверить, к какой группе принадлежит участник.И вы бы провели проверку по phpbb_user_group
таблица (если у вас был phpbb_ в качестве префикса таблиц вашего форума.)
Если вы не хотели отслеживать идентификаторы групп из базы данных, то вам нужно будет выполнить какое-то объединение и протестировать его по имени.Может быть, что-то вроде этого:
SELECT pug.user_id FROM phpbb_user_group pug
LEFT JOIN phpbb_groups g
ON pug.group_id=g.group_id
WHERE pug.user_id='$extracted_id'
AND g.group_name='Foo';
Если вы можете извлечь из этого строку, значит, вы нашли вошедшего в систему пользователя, который принадлежит к этой группе Foo.
Другие советы
Используйте таблицу пользователей PHPBB2 и ее логин и код разрешений на других страницах.Это грязно, но это работает.
Используя код PHPBB2, я имею в виду:
Покопайтесь в коде PHPBB2, выясните, как PHPBB2 аутентифицирует пользователей, и скопируйте соответствующие фрагменты кода.Если PHPBB2 прилично структурирован, вы можете просто включить пару файлов из PHPBB2 и использовать их без серьезного взлома.Если она плохо структурирована, она будет грязной и уродливой.
Не забудьте протестировать новые защищенные дополнения к вашему веб-сайту!Убедитесь, что вы правильно подбираете хаки.
Вы можете напрямую использовать таблицы пользователей и групп phpBB 2.Насколько я помню, столбец пароля - это просто md5() фактического пароля.
Этот трюк больше не работает в phpBB3, так как пароль (окончательно) изменен.