■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

Admin領域へのIPアドレスによるアクセス制限

 

<前のページ |  1  |  2  

cruel > Re: Admin領域へのIPアドレスによるアクセス制限 @ 2011/2/27 23:03
yosyos さま

早速のアドバイス、誠にありがとうございます。

スマートURLがオンの環境ですと、.htaccessで制限が可能なのですね。
CakePHPのMVCモデル等の動きがよく分かっておりませんでしたので、大変
勉強になりました。

ただ、残念なことに今回利用するクライアントのサーバーは mod_rewrite
に対応しておらず、スマートURLが利用できない環境でして、検証してみた
ところ、お教えいただいた対策では制限できないようでした。私のサーバー
環境の説明が不足しており、申し訳ございませんでした。

現在のサーバー環境等は、以下の通りです。

BaserCMSのバージョン : 1.6.9.1
サーバー名 : クライアントのサーバー(apache2.0.x)
スマートURLの利用 : オフ(mod_rewrite 利用不可)
設置フォルダ : サブフォルダ
データベース : SQLite3
OSの種類 : Linux Kernel 2.6x
PHPのバージョン : 5.2.6


mod_rewrite が利用不可能な環境では、現状コードに手を入れる方法
しかないのでしょうか・・・。
yosyos > Re: Admin領域へのIPアドレスによるアクセス制限 @ 2011/2/27 9:38
cruel さん

はじめまして。

私が管理画面にIP制限やBasic認証を置きたい場合、htaccessに記述しているので
ご参考までに。
(あくまでディレクトリ構成をbasercmsの基本構成に習っている場合の対処法ですが)

/app/webroot/以下にadminディレクトリを作ります。
↓こうなります
/app/webroot/admin/

adminディレクトリの中に.htaccessを置きます。

.htaccessには以下のように書きます。

#Basic認証を使う場合 ******は.htpasswdのフルパス
AuthUserFile ******
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user

#以下IP制限 xxx.xxx.xxx.xxxは任意の許可IP
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/$ ../index.php?url=admin/index [QSA,L]
    RewriteRule ^(.*)$ ../index.php?url=admin/$1 [QSA,L]
</IfModule>


私の場合はこれでうまくいっているので、よろしければお試しください。
(Basic認証やhtaccessの記述方法は、ここではご説明できないので検索してください。)

BaserCMSのバージョン:1.6.9.1
レンタルサーバー名:独自 さくら(専用SV) ロリポップ heteml 等
スマートURLの利用:ON
設置フォルダ:ドキュメントルート(vhost含)
利用しているデータベース:MySQL
OSの種類:割愛
PHPのバージョン:割愛
データベース種類・バージョン:割愛
cruel > Admin領域へのIPアドレスによるアクセス制限 @ 2011/2/27 0:06
はじめまして。
投稿する場所に迷ったのですが、簡単なハック(とも言えない内容
ですが……) を行いましたので、こちらに書き込みいたします。

クライアントより、Admin領域には特定のIPアドレスからのみアク
セス許可したいとの依頼があり、.htaccess 等では解決しません
でしたので、本体に手を入れさせていただきました。

・BaserCMS/baser/controllers/users_controller.php

var $components = array('ReplacePrefix', 'Auth','Cookie','AuthConfigure', 'EmailEx');

行を

var $components = array('ReplacePrefix', 'Auth','Cookie','AuthConfigure', 'EmailEx','RequestHandler');

とし、認証部分を以下のようにしました。

function beforeFilter() {

	// IPアドレスによるアクセス制限
	$ip = $this->RequestHandler->getClientIP();
	$allowip = 'XXX.XXX.XXX.XXX';
	if ($ip == $allowip) {

		/* 認証設定 */
		// beforeFilterの前に記述する必要あり
		$this->Auth->allow('mypage_login', 'admin_login', 'admin_logout','admin_login_exec', 'admin_reset_password');
		if(isset($this->params['prefix'])) {
			$this->Auth->allow($this->params['prefix'].'_login', $this->params['prefix'].'_logout', $this->params['prefix'].'_reset_password');
			$this->set('usePermission',$this->UserGroup->checkOtherAdmins());
		}

		parent::beforeFilter();

		$this->ReplacePrefix->allow('login', 'logout', 'reset_password', 'auth_prefix_error');

	}
}


上記書き換えで問題なく制限ができているようです。

こちらに書き込みいたしましたのは、もし同様の課題をお持ちの方が
おられたら、という参考のためと、バージョンアップの度に毎回書き
換えるのも書き換え忘れなどが発生する可能性もございますので、標
準の機能やセキュリティ強化プラグインとして、実装していただけれ
ばありがたいなあという、ご要望も兼ねてのものとなります。

自分で勉強するべきなのですが、なかなかゼロからプラグイン開発が
できるスキルもなく、虫のいい話で申し訳ないのですが、ご検討いた
だけるとありがたく存じます。

 

<前のページ |  1  |  2  

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
8 人のユーザが現在オンラインです。 (8 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 8