3

現在、自分のサイトの1つのセクションでPHPBB2フォーラムを使用していますが、このサイトを拡張したいと思います(新しいページ、スクリプトなどを追加します)。これらのページへのアクセスを、PHPBB2フォーラムにすでにログインしているユーザーに制限したいと思います。

実際、特定のMemberGroupのメンバーだけがこれらのページにアクセスできれば、それは素晴らしいことです。

私のサイトの残りの部分で同じログイン資格情報を使用し、メンバーがどのグループから来ているかを確認する方法はありますか?

ありがとう

(ちなみに、これらのページはPHPです)

4

3 に答える 3

1

PHPBB2 のユーザー テーブルを使用し、それは他のページのログインおよび権限コードです。汚れていますが動作します。

PHPBB2 のコードを使用すると、次のようになります。

PHPBB2 のコードを掘り下げ、PHPBB2 がユーザーを認証する方法を理解し、関連するコードのチャンクをコピーします。PHPBB2 が適切に構造化されている場合、PHPBB2 内からいくつかのファイルをインクルードするだけで、大きなハッキング作業をせずにそれらを使用できる場合があります。うまく構成されていないと、汚れて醜くなります。

あなたのウェブサイトへのあなたの新しい安全な追加をテストすることを忘れないでください! ハックが正しいことを確認してください。

于 2009-03-10T13:29:04.127 に答える
1

ユーザーが PHPBB にログインしている場合、常にそうであるとは限りませんが、そのユーザーが Cookie を持っている可能性が高く、それを読み取って、データベースに対して誰が誰であるかを確認するのに役立ちます。

この場合、以下のクッキーのパン粉を壊したいと思うでしょう:

$_COOKIE["phpbb2mysql_data"]

例を使用して、データベースに対してクエリを実行する必要があるデータを見つけてみましょう。以下は、上記の Cookie で見つかったチャンクです。

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

このためには、ログインしている PHPBB ユーザーに対応する "3" を抽出する必要があります。

そのデータをシリアル化解除して、その user_id をヤンクします。

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

(上記のシリアル化された形式のクッキーを指摘してくれたepochwolfに感謝します)

その番号は、データベースに対して実行して、メンバーが属しているグループを確認するのに適しています。そして、テーブルに対してチェックを実行し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';

そこから 1 行を引き出すことができれば、その Foo グループに属するログイン ユーザーであることがわかります。

于 2009-03-10T14:01:41.130 に答える
0

phpBB 2 のユーザー テーブルとグループ テーブルを直接使用できます。思い出すと、パスワード列は実際のパスワードの md5() にすぎません。

パスワードが (最終的に) ソルト化されるため、このトリックは phpBB3 では機能しなくなりました。

于 2009-03-10T14:10:40.237 に答える