Jeans & Development:2007年 01月の記事

NP_PostLog [Nucleus]

2007年1月31日

 『NP_ProtectByMD5でスパムを軽くあしらう』で書いたように、index.php の冒頭でスパムかどうかのチェックを行っているのであるが、一日に3-4個のPOSTアクセスがこのチェックルーチンをすり抜けている。最終的にはスパムコメントは書き込まれていないため、NP_ProtectByMD5でブロックしているようであるが、ログを取っていないためにどのような値がPOSTされたか不明である。

 そこで、そのようなケースにおいてPOSTされた値のログをとるプラグインを作成した。

NP_CaptchaSL [Nucleus]

2007年1月30日

 スパム対策ロードマップに従って、スーパーライト版NP_Captchaを作成した。

 このプラグインはNP_Captcha同様に画像認証によりスパムを撃退するものであるが、認証用の画像はこのプラグインをダウンロードするときに一度きり作成されるだけである。インストールした後は認証用の画像を作成しないので、GDがインストールされていないサーバ環境でも使用可能である。画像作成を行わないことに加えて独自のMySQLテーブルも持たないため、オリジナルのNP_Captchaに比べてサーバへの負担がかなり低いはず。

 反面、一度認証キーが破られてしまうと、スパムを連続して送られてしまうことはありうる。そういったケースでは、このプラグインをもう一度ダウンロードしなおして、上書きインストールをすればよい。こうすることで、認証画像を変更することが出来る。

 NP_CaptchaSLをダウンロードするには、ここをクリックしてください。

NP_CaptchaSLを提供するためのダウンローダー(NP_CaptchaSLDL)は、公式フォーラムからダウンロードしてください。

スパム対策ロードマップ [Nucleus]

2007年1月25日

このサイトで行おうとしている、コメントスパム対策のロードマップ。

1)NP_JSEncodeもしくはJavaScriptによる対策(注意:この方法だけでは防御が甘いため、この段階は既に過去のものになっている)

2)NP_ProtectByMD5 による対策(現在の状態)

3)NP_ProtectByMD5 + JSEncode

4)NP_ProtectByMD5 + NP_ProtectByAjax

5)スーパーライト版 NP_Captcha

6)ライト版 NP_Captcha

7)NP_Captcha

ウチにも来たフィッシング詐欺 [コンピューター・その他]

2007年1月25日

フィッシング(phishing)詐欺のメールを受け取った。まあまあ巧妙な手口である。

MacBook [General]

2007年1月14日

MacBookを入手した。実際には8月に購入していたのだが、少し訳あって今手元に。

早速Safariで自分のブログを見てみた。よしよし、巧く表示されている……と思いきや、色々不具合が。修正しないといけないなあ。

NP_WordCountJP [Nucleus]

2007年1月10日

 NP_WordCountJPなるプラグインを作成した。テンプレート変数として使用。

<%WordCountJP%> 記事の文字数を表示(本文と続きをあわせたもの)
<%WordCountJP(title)%> 記事のタイトルの文字数を表示
<%WordCountJP(body)%> 記事の本文の文字数を表示
<%WordCountJP(more)%> 記事の続きの部分の文字数を表示

<?php 
class NP_WordCountJP extends NucleusPlugin { 
    function getName() { return 'NP_WordCountJP'; }
    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 $this->getName().' plugin'; } 
    function supportsFeature($what) { return (int)($what=='SqlTablePrefix'); }
    function doTemplateVar(&$item,$type='') {
        switch(strtolower($type)){
        case 'title':    return $this->showlen($item->title);
        case 'body':    return $this->showlen($item->body);
        case 'more':    return $this->showlen($item->more);
        default:    return $this->showlen($item->body.$item->body);
        }
    }
    function showlen($text){
        mb_language('ja');
        mb_internal_encoding(_CHARSET);
        echo mb_strlen($text);
    }
}
?>

NP_FormTicket [Nucleus]

2007年1月4日

 コメントフォームに単純にticket処理を追加するだけのプラグインを作成した。21行だけの、非常に小さなプラグイン。

 NP_JSEncodeと組み合わせれば、HTMLを調査せずに決め打ちで投稿してくるスパムに対処できる。

 また、mixiの『はまちちゃん』トラップのような、CSRF攻撃によるコメント投稿を防ぐことが出来るはず。

<?php 
class NP_FormTicket extends NucleusPlugin { 
    function getName() { return 'NP_FormTicket'; }
    function getMinNucleusVersion() { return 320; }
    function getAuthor()  { return 'Katsumi'; }
    function getVersion() { return '0.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('FormExtra','ValidateForm'); }
    function event_FormExtra(){
        global $manager,$member;
        $manager->addTicketHidden();
    }
    function event_ValidateForm(){
        global $manager,$member;
        if ($manager->checkTicket()) return;
        exit('<html><body>'._ERROR_BADTICKET.'</body></html>');
    }
}
?>