Nucleus
Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
Nucleus のスキン変数<%if%>の新しい機能 [Nucleus]
2007年2月26日
しづきさんも書いていたけれど、Nucleus バージョン 3.3 では、スキンの<%if%>がいくらか拡張される。
気がついたのは、まず、プラグインで条件判定ができるdoIf()関数。これは、とっても便利。開発中のキャッシングプラグイン(半年も開発がストップしていて、開発中というのか?)で使用できる。また、NP_ExtendedIf は引退させるか、大幅に変更するかのどちらか。現在Nucleusでフォーラムを構築するためのスキンとプラグインを開発中だけれど、そのプラグインにも導入予定。
他に気がついたのは<%elseif%>が使えるようになったこと。これの導入は3.24かなと思って、3.24がリリースされたときに試してみたけれど、まだだった。
気がついたのは、まず、プラグインで条件判定ができるdoIf()関数。これは、とっても便利。開発中のキャッシングプラグイン(半年も開発がストップしていて、開発中というのか?)で使用できる。また、NP_ExtendedIf は引退させるか、大幅に変更するかのどちらか。現在Nucleusでフォーラムを構築するためのスキンとプラグインを開発中だけれど、そのプラグインにも導入予定。
他に気がついたのは<%elseif%>が使えるようになったこと。これの導入は3.24かなと思って、3.24がリリースされたときに試してみたけれど、まだだった。
$_SERVER[`HTTP_*`] [Nucleus]
2007年2月17日
現在、NP_Firewallのデータ集めをしているところである。このデータを元に、NP_Firewall をインストールしたときのデフォルトセッティングを決めたい。
$_SERVERの処理が悩ましい。現在どんな値が$_SERVERとして得られるか、データを収集中である。
$_SERVERの処理が悩ましい。現在どんな値が$_SERVERとして得られるか、データを収集中である。
SQLite の VACUUM [Nucleus]
2007年2月14日
最近、このブログの表示がやけに遅いなと思っていた。症状としては、接続してから表示が始まるまでに少し待たされ、一度表示が始まるとさっと表示されるというもの。
原因として考えられたのが、現在開発中のNP_Firewall。このプラグインは、まずデータベーステーブルの内容を呼び出し、$_POST や $_GET の値をそのテーブルの内容と比較するというもの。『こんなに遅いんじゃ、このプラグインはだめかな。開発をやめようか。』と考え始めていた。
ところが、NP_SQLiteの管理画面から『バキューム』を実行すると、元通りのスピードに。SQLiteのデータベースファイルに垢がたまっていたのがスピードに影響していたらしい。
というわけでSQLiteをご利用の皆さん、こまめにVACUUMを実行しましょう。ただし、同じくこまめにバックアップを取ることをお勧めします。『VACUUMに失敗』なんて事になる可能性が無いわけじゃないので(私は経験ありませんが)。
原因として考えられたのが、現在開発中のNP_Firewall。このプラグインは、まずデータベーステーブルの内容を呼び出し、$_POST や $_GET の値をそのテーブルの内容と比較するというもの。『こんなに遅いんじゃ、このプラグインはだめかな。開発をやめようか。』と考え始めていた。
ところが、NP_SQLiteの管理画面から『バキューム』を実行すると、元通りのスピードに。SQLiteのデータベースファイルに垢がたまっていたのがスピードに影響していたらしい。
というわけでSQLiteをご利用の皆さん、こまめにVACUUMを実行しましょう。ただし、同じくこまめにバックアップを取ることをお勧めします。『VACUUMに失敗』なんて事になる可能性が無いわけじゃないので(私は経験ありませんが)。
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
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>'); } } ?>
NP_ProtectByMD5でスパムを軽くあしらう [Nucleus]
2006年12月29日
夕べ、4時間ほどの間に76回のコメントスパムの攻撃を受けたが、すべてNP_ProtectByMD5でブロックした。現在、NP_ProtectByMD5のテスト期間としているのでNP_JSEncodeはコメントスパム対策としては使っていないために、この攻撃を受けたものと考えている。
結果としてはすべてブロックしたので、スパム業者は勝利を収めることが出来なかった。しかし、攻撃の間ずっとサーバのリソースを無駄に使い続けられたと考えると100%こちらの勝利とも言いがたい。こういったケースでのリソースの消費について考えてみた。
結果としてはすべてブロックしたので、スパム業者は勝利を収めることが出来なかった。しかし、攻撃の間ずっとサーバのリソースを無駄に使い続けられたと考えると100%こちらの勝利とも言いがたい。こういったケースでのリソースの消費について考えてみた。
NP_ProtectByAjax [Nucleus]
2006年12月26日
NP_JSEncode, NP_ProtectByMD5 に続く、スパム対策シリーズ第三弾。半分洒落のつもりで作ってみた(半分本気)。NP_JSEncodeでは、スパムロボットに読み込まれたくない部分をurl_encodeして記事に直接埋め込んでいたが、このNP_ProtectByAjaxではAjaxを用いて当該部分を別途読み込む形式。なので、より硬い防御が期待される。
使用方法はNP_JSEncodeとほとんど同じであるが、プラグイン編集オプションからキャッシュデータ(スパムロボットに対して隠蔽しているHTMLを保持する)を消去する機能が追加されている。
私のブログは人気があまり無いおかげで、NP_JSEncode と NP_ProtectByMD5 でスパムコメントを完全にブロックできている。が、将来これらの方法でブロックできなくなるケースに対処するため、作ってみた。もともとは、NP_JSEncodeの次期バージョンに組み込む予定にしていたが、ちょっと思うところあって別プラグインとして開発。
使用方法はNP_JSEncodeとほとんど同じであるが、プラグイン編集オプションからキャッシュデータ(スパムロボットに対して隠蔽しているHTMLを保持する)を消去する機能が追加されている。
私のブログは人気があまり無いおかげで、NP_JSEncode と NP_ProtectByMD5 でスパムコメントを完全にブロックできている。が、将来これらの方法でブロックできなくなるケースに対処するため、作ってみた。もともとは、NP_JSEncodeの次期バージョンに組み込む予定にしていたが、ちょっと思うところあって別プラグインとして開発。
(ここからダウンロードできます。)