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アクセスは、コマンドインジェクション脆弱性を狙った、クラッキングのトライでした…。スパムコメントではなかった。
いやはや、どんなブログツールのどんなセキュリティーホールを狙ってるんだか…。気をつけないといけなせんね。
いやはや、どんなブログツールのどんなセキュリティーホールを狙ってるんだか…。気をつけないといけなせんね。