Nucleus

NP_BlockManyLinkComment

2006年9月1日

 転職と引越しで忙しく、久々の書き込みになった。5月からの4ヶ月間、ブログもほったらかしになっていたが、案の定コメントスパムにやられた。

 現在のところスパム対策として、コメント書き込み用の form の表示に Javascript を使用している。が、どうやら Javascript 機能を搭載したスパムロボットがやってきたらしい。今ところ特徴としては、数多くの『http://』を含むということがあげられるので、これで対処できそう。簡単なプラグインを作成してみた。

NP_BlockManyLinkComment.php
<?php 
class NP_BlockManyLinkComment extends NucleusPlugin { 
    function getName() { return get_class($this); }
    function getMinNucleusVersion() { return 220; }
    function getAuthor()  { return 'Katsumi'; }
    function getVersion() { return '0.1'; }
    function getURL() {return 'http://hp.vector.co.jp/authors/VA016157/';}
    function getDescription() { return get_class($this).' plugin'; } 
    function supportsFeature($what) { return (int)($what=='SqlTablePrefix'); }
    function getEventList() { return array('PreAddComment'); }
    function event_PreAddComment(&$data){
        $allowedNum=2;
        preg_match_all('/<a href=[^>].*<\\/a>/i',$data['comment']['body'],$matches1);
        preg_match_all('/http:\\/\\//i',$data['comment']['body'],$matches2);
        if (count($matches1[0])<=$allowedNum && count($matches2[0])<=$allowedNum) return; // Return if less than allowed number.
?><html><head><title>Error</title><body>
Sorry, but comment with more than <?php echo $allowedNum?> links is not accepted.
</body></html><?php
        exit;
    }
}
?>

3つ以上のリンクを含むコメントをブロックするという仕様である。これで様子を見てみよう。

(2006-09-11 追記)
最初のバージョンでは、『<A HREF=』というパターンにやられたので、少し変更。(→ 2006-09-12 ブロックを確認)

コメント

コメントはありません

コメント送信