NP_PostLog
2007年1月31日
『NP_ProtectByMD5でスパムを軽くあしらう』で書いたように、index.php の冒頭でスパムかどうかのチェックを行っているのであるが、一日に3-4個のPOSTアクセスがこのチェックルーチンをすり抜けている。最終的にはスパムコメントは書き込まれていないため、NP_ProtectByMD5でブロックしているようであるが、ログを取っていないためにどのような値がPOSTされたか不明である。
そこで、そのようなケースにおいてPOSTされた値のログをとるプラグインを作成した。
このプラグインは、インストールするだけで有効になる。メンバー以外のPOSTアクセスについてログを取るようになっている。『var $maxlen=32;』を変更すれば、保存するデータの長さを調整可能。
このプラグインはPostAuthenticationイベントを使用している。他のプラグインで同じイベント中に処理を中止するものがある(NP_ProtectByMD5など)ので、そういった場合は、プラグインリストの順位を調整することで、処理を中止した場合にログをとるかとらないかの調整ができる。
そこで、そのようなケースにおいてPOSTされた値のログをとるプラグインを作成した。
このプラグインは、インストールするだけで有効になる。メンバー以外のPOSTアクセスについてログを取るようになっている。『var $maxlen=32;』を変更すれば、保存するデータの長さを調整可能。
このプラグインはPostAuthenticationイベントを使用している。他のプラグインで同じイベント中に処理を中止するものがある(NP_ProtectByMD5など)ので、そういった場合は、プラグインリストの順位を調整することで、処理を中止した場合にログをとるかとらないかの調整ができる。
<?php
class NP_PostLog extends NucleusPlugin {
function getName() { return 'NP_PostLog'; }
function getMinNucleusVersion() { return 220; }
function getAuthor() { return 'Katsumi'; }
function getVersion() { return '0.1.1'; }
function getURL() {return 'http://hp.vector.co.jp/authors/VA016157/';}
function getDescription() { return $this->getName().' plugin'; }
function supportsFeature($what) { return (int)($what=='SqlTablePrefix'); }
function getEventList() { return array('PostAuthentication'); }
function event_PostAuthentication() {
global $member;
if ($member->isLoggedIn()) return;
if (strtoupper($_SERVER['REQUEST_METHOD'])!='POST') return;
$message='NP_PostLog:'.$_SERVER['REMOTE_ADDR']."//\n";
$message.='URI:['.$_SERVER['REQUEST_URI']."]//\n";
foreach($_POST as $key=>$value){
if (!is_array($value)) $message.="$key=".substr($value,0,$this->maxlen)."//\n";
else foreach($_POST as $key2=>$value) $message.="$key\[$key2]=".substr($value,0,$this->maxlen)."//\n";
}
ACTIONLOG::add(WARNING, $message);
}
var $maxlen=32;
}
?>コメント
Katsumi as guest (2007年1月31日 19:01:50)
NP_PostLog用、テスト書き込み。
Katsumi (2007年2月9日 11:55:18)
NP_ProtectByMD5をすり抜けていたPOSTアクセスは、コマンドインジェクション脆弱性を狙った、クラッキングのトライでした…。スパムコメントではなかった。
いやはや、どんなブログツールのどんなセキュリティーホールを狙ってるんだか…。気をつけないといけなせんね。
いやはや、どんなブログツールのどんなセキュリティーホールを狙ってるんだか…。気をつけないといけなせんね。