Используйте учетные данные для входа на PHPBB2 на моем сайте

StackOverflow https://stackoverflow.com/questions/630027

  •  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, так как пароль (окончательно) изменен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top