yoshy
1
【環境情報】
・baserCMSのバージョン:5.2.0
・レンタルサーバー名:NTT OCN Bizメール&ウェブプレミアム R3
・使用テーマ:当社独自
・PHPスキル(自己評価):E
・CakePHPバージョン: 5.0.10
・PHP Version 8.3.23
・mysql 8.4.5
・jQuery 3.7.1
・Apache 2.4.37
社内向けにコンテンツの維持管理を行っております。
管理画面へのアクセスをIPアドレスで利用制限をして運用しています。
先日、管理画面へのアクセスするIPアドレスを追加する必要があり、
追加プラグインであるSiteSecurityでIPアドレスの追加を行い、管理画面から
ログアウトした直後から管理画面に入れなくなりました。
管理画面にログインしようとすると404 not foundになります。
通常のサイトとしての表示はできています。
幸いFTPでは、アクセスできるため、過去のバックアップや現在の最新のサイト情報は、
すべてダウンロードできています。
.\plugins\SiteSecurity\config\Migrations配下の
20250905000001_CreateSiteSecurityConfigsの記述に下記記載があり、おそらくIP制限は、
有効になっていると思うのですが、制限しているIPアドレスの記述場所がわかりません。
->addColumn('ip_limit', 'text', [
'default' => null,
'null' => true,
'comment' => 'IP制限'
本管理ソフトのマイグレーション等も外注しており、当社内でも知見がなく下手にさわると
さらに被害が拡大しそうで現時点さわれていません。
お手数ですが、下記内容についてご教示いただけないでしょうか
質問1 IPアドレスの制限の確認は、上記パスのファイル記述で間違いないでしょうか?
質問2 許可しているIPアドレス自身の記述は、どのフォルダーのどのファイルに記載があるでしょうか
質問3 一旦上記ファイルの ‘null’ => true, を ‘null’ => false,に変更するだけで管理画面にアクセスできますでしょうか?
@yoshy
はじめまして。
こちらの件確認いたしました。
追加プラグインであるSiteSecurityでIPアドレスの追加を行い
こちらのプラグインは独自(自社/外注)で開発されたものでしょうか?
調べてみても情報が出てこず…
もし独自で開発されている場合詳細な処理が把握できないため開発者に直接連絡をするのが確実かと思います。
その前提ですが、分かる範囲で質問に回答させていただきます。
.\plugins\SiteSecurity\config\Migrations配下の
20250905000001_CreateSiteSecurityConfigsの記述に下記記載があり、おそらくIP制限は、
有効になっていると思うのですが、制限しているIPアドレスの記述場所がわかりません。
こちらはマイグレーションファイルというDBの構造変更をするためのファイルです。
addColumnはDBにカラムを追加する記述で、上記の場合ですとテーブルにip_limitカラム(テキスト型)を新しく追加しているようです。
質問1 IPアドレスの制限の確認は、上記パスのファイル記述で間違いないでしょうか?
こちらはDBのカラムの設定となるので、実際の設定値(有効or無効)はDBを見ないとわからないと思います。
質問2 許可しているIPアドレス自身の記述は、どのフォルダーのどのファイルに記載があるでしょうか
ip_limitというカラムを追加しているので、おそらくDBに保存されているのではないでしょうか?
もしphpMyAdminやadminerといったツールでDBが開ける状態であれば、ip_limitカラムに何が入っているかを確認してみると良さそうです。
質問3 一旦上記ファイルの ‘null’ => true, を ‘null’ => false,に変更するだけで管理画面にアクセスできますでしょうか?
おそらくできないかと思います。
マイグレーションファイルは、変更した後に実際にmigrateという処理を実行する必要があるためです。
ファイルを書き換えただけでは反映されません。
一番確実なのはプラグインの開発者に直接連絡をすることですが、DBを覗いてip_limitカラムに何が保存されているかを確認してみるのは1つの手かと思います。
参考になれば幸いです。
yoshy
3
ご返信ありがとうございます。
初期導入から一貫してBaserCMSの構築からVerupまで外注していましたので
プラグインについても同様です。
なお、
\plugins\SiteSecurity\src\Event\SiteSecurityControllerEventListener.phpに下記の記述がありましたのでテーブルとしてSiteSecurity.SiteSecurityConfigsあたりを調べればよいのかと理解しています。
$SiteSecurityConfig = TableRegistry::getTableLocator()->get('SiteSecurity.SiteSecurityConfigs');
$ip = $Controller->getRequest()->clientIP();
$config = $SiteSecurityConfig->find()->first();
$ip_limits = $config ? $config->ip_limit : '';
$ip_limits = str_replace(array("\r\n","\r","\n"),"\n",$ip_limits);
$ip_limits = explode("\n",$ip_limits);
if(\BaserCore\Utility\BcUtil::isAdminSystem() && !empty($ip_limits[0]) && !in_array($ip,$ip_limits,true)){
//ipと一致していなければ
throw new NotFoundException('見つかりませんでした。');
}
しかしご教示いただいたDBをのぞこうとphpMyAdminの管理画面表示まではたどり着いたのですが、ログインのアカウント情報も引き継げていませんので、ログインできませんでした。
前回SIいただいた外注先に相談してみます。
取り急ぎご回答ありがとうございました。
yoshy
4
このPluginで下記記述を見つけました。phpMyAdminにログインできない状況ですが、やはりテーブルに持っていそうですね。
SiteSecurity Plugin Migration
CakePHP 5対応について
このプラグインはCakePHP 2のSchemaクラスからCakePHP 5のマイグレーション形式にリファクタリングされました。
マイグレーション実行方法
# プラグインのマイグレーションを実行
bin/cake migrations migrate -p SiteSecurity
# 初期データを投入(オプション)
bin/cake migrations seed -p SiteSecurity
変更点
config/Schema/site_security_configs.php → config/Migrations/20250905000001_CreateSiteSecurityConfigs.php
config/Schema/site_security_login_errors.php → config/Migrations/20250905000002_CreateSiteSecurityLoginErrors.php
- CakePHP 5の型宣言とマイグレーション形式に準拠
- 初期データ投入用のシードファイルを追加
テーブル構造
site_security_configsテーブル
id: プライマリキー
redirect: リダイレクト判定 (boolean)
alert: ログインアラート判定 (boolean)
alert_admin: 受信者判定 (boolean)
captcha: 画像認証判定 (boolean)
ip_limit: IP制限 (text)
login_error: ログインエラー設定 (integer)
created: 作成日 (datetime)
modified: 更新日 (datetime)
site_security_login_errorsテーブル
id: プライマリキー
ip_address: IPアドレス (text)
created: 作成日 (datetime)
modified: 更新日 (datetime)
yoshy
5
本件、外注先に協力いただき、下記ファイルの修正したところ無事管理者画面にアクセスできるようになりました。
ファイル./config/.env
export ADMIN_PREFIX
当社でも上記、環境変数に設定されている文字をタイピングした記憶がなく、
疑問が残るところではありますが、フォーラムでご回答いただいた皆様
ご助言ありがとうございました。
「いいね!」 1