Nucleus/SQLite

SQLite Manager

2006年11月26日

 Nucleus-SQLite の管理のため、SQLite Manager を導入した。phpMyAdmin 同様、セキュリティーには要注意である。次の方法で、セキュリティーを確保することにした。

1)インストールするURLを、第三者が知り得ないものにする。

2).htaccess を用いて、アクセスできる IP アドレスを絞込み、自分が使っているコンピュータ以外からのアクセスを出来るだけ阻止する。

3).htaccess を用いて、パスワードの設定を行う。

4)使用している Nucleus に super-admin としてログインしているときのみ SQLite Manager が使用できるようにする。


4)のための設定として、include/user_defined.inc.php に次の記述を書き加えた。

$DIR_NUCLEUS = '/xxxxxxxx/xxxxxxxx/nucleus/';
include($DIR_NUCLEUS.'sqlite/sqlite.php');
$res=nucleus_mysql_query('SELECT value FROM nucleus_config WHERE name="CookiePrefix"');
if ($row=nucleus_mysql_fetch_row($res)) $cp=$row[0]; else $cp='';
$user=$_COOKIE[$cp.'user'];
$key=$_COOKIE[$cp.'loginkey'];
if (!$user || !$key) exit('You are not logged in.');
$res=nucleus_mysql_query('SELECT mcookiekey, madmin FROM nucleus_member WHERE mname="'.addslashes($user).'"');
if ($row=nucleus_mysql_fetch_row($res)) $mkey=$row[0]; else $mkey='';
if ($key!=$mkey) exit('You are not logged in.');
if ($row[1]!=1) exit('You are not super-admin.');

これで、Nucleus にログインしているときのみ、SQLite Manager が使えるようになる。

(追記:07-06-26)
Nucleus 3.3 では、以下のように記述する必要がある(下から2行目が書き換わっている)。
$DIR_NUCLEUS = '/xxxxxxxx/xxxxxxxx/nucleus/';
include($DIR_NUCLEUS.'sqlite/sqlite.php');
$res=nucleus_mysql_query('SELECT value FROM nucleus_config WHERE name="CookiePrefix"');
if ($row=nucleus_mysql_fetch_row($res)) $cp=$row[0]; else $cp='';
$user=$_COOKIE[$cp.'user'];
$key=$_COOKIE[$cp.'loginkey'];
if (!$user || !$key) exit('You are not logged in.');
$res=nucleus_mysql_query('SELECT mcookiekey, madmin FROM nucleus_member WHERE mname="'.addslashes($user).'"');
if ($row=nucleus_mysql_fetch_row($res)) $mkey=$row[0]; else $mkey='';
if (md5($key.preg_replace('/\.[0-9]+$/','',$_SERVER['REMOTE_ADDR']))!=$mkey) exit('You are not logged in.');
if ($row[1]!=1) exit('You are not super-admin.');

コメント

コメントはありません

コメント送信