ページ 1 / 1
マルチインストール時に認証なしで入れてしまう
Posted: 2010年9月16日(木) 09:58
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
Re: マルチインストール時に認証なしで入れてしまう
Posted: 2010年9月20日(月) 20:34
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を操作することになるため、お気をつけくださいー。
Re: マルチインストール時に認証なしで入れてしまう 【解決済み】
Posted: 2010年9月21日(火) 21:02
by li4ch
返信ありがとうございます。
soushi さんが書きました:
]こちらは同じユーザIDが存在する場合が問題になるみたいですね。
現象を確認するにあったって、一点確認があります。
2つのMODxをインストールする際、1つめのMODxをインストール後、そのままそのMODxをコピーして2つめを作成されたのでしょうか。
インストール後コピーして、そのまま2つ目を作るやり方と、2つともインストーラーを使って作るやり方、両方共に現象を確認したと思っていましたが、勘違いしてました。
いろいろテストしてみたところ、soushiさんのおっしゃる通り、2つともインストーラーを使えば大丈夫でした。申し訳ないです。
不具合があったサイトも、session_nameを変更して、ちゃんと動作を確認しました。
ありがとうございました。勉強になりました。
追記
教えて頂いたプラグインは、エラーが出て管理画面が動かなくなっちゃいました^^(テストサイトなんで全然大丈夫ですが)
Re: マルチインストール時に認証なしで入れてしまう
Posted: 2010年9月29日(水) 13:40
by soushi
soushiです。
返信遅れてしまいました(汗
期待通りの動きをするようになって良かったです
li4ch さんが書きました:
追記
教えて頂いたプラグインは、エラーが出て管理画面が動かなくなっちゃいました^^(テストサイトなんで全然大丈夫ですが)
そういえば一旦エラーになるとセッションをクリア(ブラウザ落とす)しないとエラーが延々とでるかもしれません。
これだと使いづらいですね…。
やっぱり小手先だけの対応だとちょっと無理がありました
Re: マルチインストール時に認証なしで入れてしまう
Posted: 2011年4月19日(火) 09:40
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