在我的站点中使用PHPBB2登录凭据

时间:2009-03-10 12:57:38

标签: php login credentials phpbb

我目前正在为我的一个网站的一部分使用PHPBB2论坛,我想扩展这个网站(添加新页面,脚本等)。我想限制对已经登录PHPBB2论坛的用户访问这些页面。

事实上,如果只有某个MemberGroup的成员才能访问这些页面,那就太棒了。

有没有办法在我网站的其余部分使用相同的登录凭据,并检查成员来自哪些组?

由于

(顺便说一句,这些页面都是PHP)

3 个答案:

答案 0 :(得分:1)

使用PHPBB2的用户表及其他页面中的登录和权限代码。它很脏但是有效。

使用PHPBB2的代码,我的意思是:

深入了解PHPBB2的代码,弄清楚PHPBB2如何对用户进行身份验证,并复制相关的代码块。如果PHPBB2结构合理,您可以在PHPBB2中包含几个文件,并在没有重大黑客攻击的情况下使用它们。如果结构不合理,那就会变得肮脏和丑陋。

不要忘记测试您的新网站安全添加内容!确保你得到正确的黑客攻击。

答案 1 :(得分:1)

如果用户登录PHPBB,那么很有可能(尽管并非总是可能)他们将拥有一个可以阅读的cookie,并帮助检查谁是谁对数据库。

在这种情况下,您需要打破下面的cookie的碎屑:

$_COOKIE["phpbb2mysql_data"]

让我们使用一个示例并将其吹出来查找我们需要针对数据库查询的数据。以下是上述cookie中的块:

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

为此,您需要进入并提取恰好与登录的PHPBB用户对应的“3”。

Unserialize that data将user_id拉出来:

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

(感谢epochwolf指出该cookie的上述序列化形式)

对于数据库运行该数字将很好,以检查该成员属于哪个组。你会对phpbb_user_group表进行检查(如果你有phpbb_作为论坛表的前缀。)

如果您不想跟踪数据库中的组ID,那么您需要对名称进行某种类型的连接和测试。也许是这样的:

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组的登录用户。

答案 2 :(得分:0)

您可以直接使用phpBB 2的用户和组表。我记得,密码列只是实际密码的md5()。

这个技巧在phpBB3中不再有效,因为密码是(最终)腌制的。

相关问题