Jeans & Development:
Deprecated: Function strftime() is deprecated in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/blog.php on line 333
2007年 01月の記事
NP_PostLog [Nucleus]
2007年1月31日
『NP_ProtectByMD5でスパムを軽くあしらう』で書いたように、index.php の冒頭でスパムかどうかのチェックを行っているのであるが、一日に3-4個のPOSTアクセスがこのチェックルーチンをすり抜けている。最終的にはスパムコメントは書き込まれていないため、NP_ProtectByMD5でブロックしているようであるが、ログを取っていないためにどのような値がPOSTされたか不明である。
そこで、そのようなケースにおいてPOSTされた値のログをとるプラグインを作成した。
そこで、そのようなケースにおいてPOSTされた値のログをとるプラグインを作成した。
NP_CaptchaSL [Nucleus]
2007年1月30日
スパム対策ロードマップに従って、スーパーライト版NP_Captchaを作成した。
このプラグインはNP_Captcha同様に画像認証によりスパムを撃退するものであるが、認証用の画像はこのプラグインをダウンロードするときに一度きり作成されるだけである。インストールした後は認証用の画像を作成しないので、GDがインストールされていないサーバ環境でも使用可能である。画像作成を行わないことに加えて独自のMySQLテーブルも持たないため、オリジナルのNP_Captchaに比べてサーバへの負担がかなり低いはず。
反面、一度認証キーが破られてしまうと、スパムを連続して送られてしまうことはありうる。そういったケースでは、このプラグインをもう一度ダウンロードしなおして、上書きインストールをすればよい。こうすることで、認証画像を変更することが出来る。
NP_CaptchaSLをダウンロードするには、ここをクリックしてください。
(NP_CaptchaSLを提供するためのダウンローダー(NP_CaptchaSLDL)は、公式フォーラムからダウンロードしてください。)
このプラグインは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
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
MacBook [General]
2007年1月14日
MacBookを入手した。実際には8月に購入していたのだが、少し訳あって今手元に。
早速Safariで自分のブログを見てみた。よしよし、巧く表示されている……と思いきや、色々不具合が。修正しないといけないなあ。
早速Safariで自分のブログを見てみた。よしよし、巧く表示されている……と思いきや、色々不具合が。修正しないといけないなあ。
NP_WordCountJP [Nucleus]
2007年1月10日
NP_WordCountJPなるプラグインを作成した。テンプレート変数として使用。
<%WordCountJP%> 記事の文字数を表示(本文と続きをあわせたもの)
<%WordCountJP(title)%> 記事のタイトルの文字数を表示
<%WordCountJP(body)%> 記事の本文の文字数を表示
<%WordCountJP(more)%> 記事の続きの部分の文字数を表示
<%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攻撃によるコメント投稿を防ぐことが出来るはず。
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>'); } } ?>