マルチインストール時に認証なしで入れてしまう  【解決済み】

質問全般・改善要望
返信する
li4ch
メンバー
メンバー
記事: 18
登録日時: 2009年10月09日(金) 14:41

マルチインストール時に認証なしで入れてしまう

投稿記事 by li4ch »

例えば、以下のような設定でマルチインストールします。

*設定1
フォルダ名、プリフィックス:modx1
ユーザーID:admin
パスワード:123456

*設定2
フォルダ名、プリフィックス:modx2
ユーザーID:admin
パスワード:abcdefg

設定1にログインした時のURLは、http://hoge.com/modx1/manager/になりますが
これをログアウトせず、URLをmodx2に変えて入ると、そのまま設定2にログインせずに入れてしまいます。

サーバーは、CPI、さくらで確認しました。

追記
データベースをそのまま引越ししてコピーした場合、それぞれクリーンインストールした場合、それぞれ起こることを確認しました。
xreaでも挙動を確認できました。

環境:
MODx 1.0.4J
ブラウザ:IE8, Firefox3.6.8
soushi
管理人
記事: 224
登録日時: 2009年7月30日(木) 01:59

Re: マルチインストール時に認証なしで入れてしまう

投稿記事 by soushi »

soushiです。
連絡ありがとうございます。

こちらは同じユーザIDが存在する場合が問題になるみたいですね。
現象を確認するにあったって、一点確認があります。
2つのMODxをインストールする際、1つめのMODxをインストール後、そのままそのMODxをコピーして2つめを作成されたのでしょうか。

MODxはインストール時にユニークなIDを生成してそれをsession_name()に利用するようになっているため、このIDがかぶらなければ同じドメイン上にインストールされたMODxでも違うセッション情報を利用するようになっています。
一度、以下の設定が同じ文字列になっていないか確認をお願いできますでしょうか。
もし同じ場合はどちらかを違う文字列に変えてみてください。
(ここは適当な文字列に変えてもらってOKです)

[ファイル]./manager/includes/config.inc.php

コード: 全て選択

$site_sessionname = 'SNxxxxxxxxxxx';
文字列を変えても問題が出る場合は、さしあたり以下のプラグインで防ぐことができると思います。
(実際に試してないですが、多分大丈夫かと(^^;)

[チェックするイベント]
OnManagerPageInit

[コード]

コード: 全て選択

if(! isset($_SESSION['ck_base_url']) ){
  $_SESSION['ck_base_url'] = MODX_BASE_PATH;
}
if( strcmp($_SESSION['ck_base_url'],MODX_BASE_PATH)!=0 ){
  //error!
  echo "Error!\n";
  exit();
}
管理画面をいじるスニペットなので、もしログインできなくなったらDBを操作することになるため、お気をつけくださいー。
li4ch
メンバー
メンバー
記事: 18
登録日時: 2009年10月09日(金) 14:41

Re: マルチインストール時に認証なしで入れてしまう  【解決済み】

投稿記事 by li4ch »

返信ありがとうございます。
soushi さんが書きました: ]こちらは同じユーザIDが存在する場合が問題になるみたいですね。
現象を確認するにあったって、一点確認があります。
2つのMODxをインストールする際、1つめのMODxをインストール後、そのままそのMODxをコピーして2つめを作成されたのでしょうか。
インストール後コピーして、そのまま2つ目を作るやり方と、2つともインストーラーを使って作るやり方、両方共に現象を確認したと思っていましたが、勘違いしてました。
いろいろテストしてみたところ、soushiさんのおっしゃる通り、2つともインストーラーを使えば大丈夫でした。申し訳ないです。

不具合があったサイトも、session_nameを変更して、ちゃんと動作を確認しました。

ありがとうございました。勉強になりました。

追記
教えて頂いたプラグインは、エラーが出て管理画面が動かなくなっちゃいました^^(テストサイトなんで全然大丈夫ですが)
soushi
管理人
記事: 224
登録日時: 2009年7月30日(木) 01:59

Re: マルチインストール時に認証なしで入れてしまう

投稿記事 by soushi »

soushiです。

返信遅れてしまいました(汗
期待通りの動きをするようになって良かったです :)
li4ch さんが書きました: 追記
教えて頂いたプラグインは、エラーが出て管理画面が動かなくなっちゃいました^^(テストサイトなんで全然大丈夫ですが)
そういえば一旦エラーになるとセッションをクリア(ブラウザ落とす)しないとエラーが延々とでるかもしれません。
これだと使いづらいですね…。
やっぱり小手先だけの対応だとちょっと無理がありました :roll:
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: マルチインストール時に認証なしで入れてしまう

投稿記事 by sama55 »

自分も同様の現象に悩んだので追記させていただきます。
まず、既存のサイト(ファイルシステム&DB)を複製して別ドメインや別フォルダに移植する場合は、manager/includes/config.inc.phpの$site_sessionnameとDBのmodx_system_settingsテーブルのsetting_name=site_id行のsetting_value値を変える必要があるようです。$site_sessionnameとsite_idはどちらもPHPのuniqid関数で出力される13桁($site_sessionnameの方はSN+13桁)の文字列で構成されるので、<?php return uniqid(); ?> 的なスニペットで表示された文字列を同ファイルとDBの当該レコードに書き込んでからキャッシュをクリアしてやればOKなようです。尚、MODXのインストーラには新規インストールとアップグレードの他に第三のモードがあり、プログラムを見ると、このモードを実行することでもリセットされる気がします(実際に試したわけではありませんが・・・)。ただ、ファイルとDBを丸ごとコピーするような選択をする人は再度インストーラを流すようなリスクは負いたくないと思いますので、マニュアルで操作することになろうと思います。

仮にもし上記の操作を行わずに同一ドメイン内で複数のサイトを運用した場合、li4chさんのご報告のとおり、複製元、複製先どちらかの管理画面に入れるユーザーは、他のサイトにも認証無しで入れてしまうことになりますので、セキュリティ的に相当ヤバい状態になります。

ちなみに、本件は本家フォーラムでも困ってる人がいました(例によって誰もレスしてませんが・・・ :?
http://modxcms.com/forums/index.php?topic=49497.0
返信する