Использовать учетные данные для входа в PHPBB2 на моем сайте - PullRequest
3 голосов
/ 10 марта 2009

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

Фактически, если бы только члены определенной MemberGroup могли получить доступ к этим страницам, это было бы здорово.

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

Спасибо

(кстати, эти страницы на PHP)

Ответы [ 3 ]

1 голос
/ 10 марта 2009

Если пользователь вошел в PHPBB, есть хороший шанс, хотя и не всегда, что у него будет файл cookie, который вы можете прочитать, и который поможет вам проверить, кто есть кто в базе данных.

В этом случае вам нужно разбить крошки печенья ниже:

$_COOKIE["phpbb2mysql_data"]

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

a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"3";}

Для этого вы захотите зайти и извлечь ту «3», которая соответствует зарегистрированному пользователю PHPBB.

Отменить сериализацию этих данных , чтобы вытащить этого user_id:

 $goo = unserialize($_COOKIE["phpbb2mysql_data"]);
 $extracted_id = $goo["userid"];

(Спасибо epochwolf за указание на вышеуказанную сериализованную форму этого печенья)

Это число будет хорошо работать с базой данных, чтобы проверить, к какой группе принадлежит член. И вы должны выполнить проверку по таблице 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.

1 голос
/ 10 марта 2009

Используйте пользовательскую таблицу PHPBB2, а также код входа и разрешения на других страницах. Это грязно, но работает.

Используя код PHPBB2, я имею в виду:

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

Не забудьте проверить свои новые защищенные дополнения на вашем сайте! Убедитесь, что вы правильно поняли хаки.

0 голосов
/ 10 марта 2009

Вы можете напрямую использовать таблицы пользователей и групп phpBB 2. Насколько я помню, столбец пароля - это просто md5 () фактического пароля.

Этот трюк больше не работает в phpBB3, так как пароль (наконец-то) соленый.

...