SQLite Manager
2006年11月26日
Nucleus-SQLite の管理のため、SQLite Manager を導入した。phpMyAdmin 同様、セキュリティーには要注意である。次の方法で、セキュリティーを確保することにした。
1)インストールするURLを、第三者が知り得ないものにする。
2).htaccess を用いて、アクセスできる IP アドレスを絞込み、自分が使っているコンピュータ以外からのアクセスを出来るだけ阻止する。
3).htaccess を用いて、パスワードの設定を行う。
4)使用している Nucleus に super-admin としてログインしているときのみ SQLite Manager が使用できるようにする。
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.');