2008年4月の投稿

Ktai Style バージョン 2008.4.1 リリース
WordPress 向け携帯対応プラグイン「Ktai Style」の新バージョンをリリースいたしました。今回はバージョン番号が一気にインフレして、ver 2008.4.1 となります。主な変更点は以下の通りです。
- 高度な自動設定機能を搭載したため、設定画面を廃止しました(!)
- 携帯テーマは1つのみ (single.php, comments.php) で選択できなくなりました(!)
- 脆弱性がないかと不安なので、管理機能を廃止しました(!)
- セキュリティー向上のため、外部サイトへのリンクは削除するようにしました(!)
- フルブラウザーに切り替えると意味がないため、個体識別情報の要求をやめました(!)
- 3G 端末等での「画像を表示/リンクに変換」のメニューを廃止しました (パケ死上等!)
ダウンロード⇒ktai_style20080401.tar.bz2 (95.1KB)
なお、このバージョンは、本日2008年4月1日のみの限定配布です。そのため、SF.JP での配布はしておらず、上記リンクからのダウンロードのみとなります。使ってみたい方はぜひとも早めの入手をお願いいたします。例によって、動作サンプルは「Yuriko.Net 旅行記」をご覧ください。(リンク先は、PC 画面でも特別な動作を行うよう改造してあります)
[追記 2008-04-02] お楽しみ頂けましたでしょうか。アクセスログによりますと、のべ32回ダウンロードされました。ぜひ来年の4月1日にご使用頂けると幸いです
今年の「はにわっく坂神」も濃ゆすぎ
(本当は「旅行記」向けのネタですが、ただいま「shuffle edition」でランダム表示になっているため、こちらに掲載します)
今年もネット界では、ネタが満開のようです。阪神電車の鉄道ファン向けウェブサイト「まにあっく阪神」も、「はにわっく坂神」と称してネタをやっていますが、そのトップにあるのが「近鉄直通車塗装の 8901 系」という、これまた車両マニアしか分からへんで、というネタになっています。残念ながら、わたしは車両には詳しくない人なので、いまいちピンと来ませんでした。去年の「直特・阿下喜」のがよかった気がしますね。
個人的に好きなネタは、「MEGA goo」でした。最近の「メガ食品ブーム」に乗っかりつつも、古き良き Eyes を組み込んでしまうなんて、なかなかおちゃめ。
「玖伊屋ウェブサイト」も4回目となるエイプリルフールをやっていいますので、暇があれば見てみてください。携帯電話版はちょっと綻びがあるのですが、ご容赦を (ぜんぶひらがなにするのがめんどうだった)。
H11Tを交換依頼
購入直後から EM chip を認識しない不具合が出た H11T ですが、カスタマーサポートセンターと相談した結果、移動機を交換することにしました。神奈川県内だと近いためか明日到着予定です→あさって3日到着に延期されました。
しかし、ここに至るには紆余曲折がありました。きのう電話したときは「オールリセットする」という対応を提案されました。それでしばらく動いていたように見えましたが、本日昼すぎから現象再現しました。再度サポートに電話すると、「交換します」という対応となったのですが、なんと「SIM 含めて丸ごと交換するので電話番号も変わります」という内容です。事前予約までして取得した良番なのに、変更するなんて「ありえない」話です。「移動機だけ送ってもらって、SIM はこちらで交換する」という方向で話をすすめましたが、SIM が不良の可能性もあるということで、SIM 記載の EMB 番号および ICC 番号を伝えることで、同じ電番が入った SIM を送ってもらえることになりました(SIM 交換すると思ったのは勘違い。EMB 番号とICC番号を聞かれたので、てっきりそうだと思ってしまった)。そのかわり、半日ほどは通信ができなくなります。
音声サービスは開始したばかりとはいえ、データー通信サービスは1年もやっているのですから、サポートセンターの対応はもっとスマートにしてもらいたいものです。わたしのように「押しが強い人間」ならばまだしも、そうでない人は泣き寝入りをするパターンも多いのではないでしょうか。
何より、本人確認の手段として「ネットワーク暗証番号を口頭で答えさせる」のはひどいと思います。銀行やクレジットカード会社では、御法度な方法ですよ!! イー・モバイルは、大衆のセキュリティー意識を下げさせてしまっています!!
PC でも Ktai Style 2008.4.1 みたいな表示にする方法
本日の「Yuriko.Net 旅行記」では、PC 表示でも「Ktai Style 2008.4.1」と同じ特別な表示をさせていますが、これは、別のプラグインを入れることで実現しています。「特別な表示」を実現するエッセンスは非常に短かいコードなのです。
< ?php /* Plugin Name: Random Pickup Plugin URI: http://www.yuriko.net/travel/2008/04/01/2008-aprilfool/ Description: Shuffle style for PC page Author: IKEDA Yuriko Version: 0.92 Author URI: http://www.yuriko.net/cat/wordpress/ */ function random_pickup() { if (is_robots() || is_feed() || is_trackback() || is_404() || is_page()) { return; } global $wpdb; $post = $wpdb->get_results("SELECT ID, post_type FROM $wpdb->posts WHERE post_status = 'publish' AND post_password = '' AND post_date < NOW() ORDER BY RAND() LIMIT 1", ARRAY_A); if ($post[0]['post_type'] == 'post') { query_posts("p={$post[0]['ID']}"); } elseif ($post[0]['post_type'] == 'page') { query_posts("page_id={$post[0]['ID']}"); } return; } add_action('template_redirect', 'random_pickup');
コードをよく見ると、前半と後半で矛盾があります。当初「ページ」も対象にしていたのですが、途中でページを除外したため、後半にページ向け処理が残っているわけです。今からでも遅くないので、みなさんの WordPress にもぜひどうぞ
閉鎖ネタばっかり
個人ウェブログでもエイプリルフールを実施しているところがありますが、「閉鎖します」というネタがめちゃくちゃ多い……。まあ、「オープンします」というネタは作りにくいし、玖伊屋ウェブサイトみたいに内容をごっそり変更するのはレンタルブログでは困難ですから、仕方ないのかもしれません。当サイトみたいに、「エイプリルフールプラグイン」をリリースするのは、もの作りができる人に限定されてしまいますし。
それにしても、アイレムとか円谷プロの気合いの入りようは感心です。Yahoo のインベーダーゲームはすごいですよね。

ワードサラダを通報する
テクノラティで「H11T」で検索していると、ワードサラダとなっているウェブログが見つかりました。今までは、この手の「スパムブログ」は無視していたのですが、GIGAZINE によると「こまめに通報して削除させた方がよい」とのことなので、通報してみました。今回の対象はSeesaa ブログですが、通報窓口が少し分かりにくかったものの、丁寧な返事とともにすぐ対応されました。なかなかのものですね。
できるだけ、同じサービスで提供しているスパムブログをまとめて通報したいため、見つけたら手元に URL をメモしておいて、1週間ぐらいごとに通報するのがよいでしょうか。
WordPress ME のリパッケージ中
先日立ち上げた「WordPress ME サポートプロジェクト」ですが、新プロジェクトとして配布する ME 2.0.11 パッケージを制作しています。これがなかなか苦労しています。
すでにリリースされているものなので、ドキュメントやソースの中にある “wordpress.xwd.jp” というドメイン名を “wpme.sourceforge.jp” に書き換えるだけ、と思っていたのですが、他にも修正点がいくつか出てきました。
- 実はウィザードにいくつかバグがあったので修正。
- MySQL 4.1 以降の環境に必要な “SET NAMES utf8″ (UTF-8 の場合) の追加 (WordPress 2.2 から対応されたものをバックポート)。
- version.php で規定するバージョン番号を “2.0.11-ME” に変更。従来の “ME2.0.11″ だと海外製プラグインで、「WP バージョン 0」とみなされてしまい、動作不具合が多かったため。
で、2番目の SET NAMES 文の対応で結構苦労しました。EUC-JP だけ文字化けしまくるのです……。悪戦苦闘してバグ取りした結果、動作するようになりました (if (defined(WPLANG)) ...
なんて情けないミスが原因)。
SET NAMES 文を使うのはセキュリティー的にいまいちなのですが、他にいい方法がないんですよね……。まあ、SQL インジェクションが起きそうのは Shift_JIS 運用のときだと思われるので、ウィザード画面で「新規ブログの場合 Shift_JIS は使用禁止」と書くことで逃げることにしました
もうちょっとテストしまして、今週中にはリリースできれば、と思います。プロジェクトメンバーのみなさんにテスト版どうやって配布しようか??
[追記] “SET NAMES utf8″ ですが、新規インストールの場合はよいですが、従来 ME 2.0.x を使っていて wp-db.php を改造してない人のアップグレードでは問題になりますね (確実に文字化けする)。WPLANG による振り分けではなく、DB_CHARSET 定数 (WP 2.2 から導入) を wp-config.php に加えることにして、これの内容で SET NAMES の発行をすることにしましょう (DB_CHARSET がない場合は発行しない)。
[追記その2] この記事のタイトルですが「リパッケージ」であって「海苔パッケージ」ではないですよ!! さきほど、リリース候補版を出しましたので、興味ある方はお試し願います。

唸るほどスパムが来るので対策
当サイトを WordPress 2.5 にして数日立ちますが、強烈な数のコメントスパムが到来するようになりました!! Akismet を有効にしていたため、表には見えていませんが、1日で200件程度来ます。ドメイン名直下に WordPress があるのは攻撃されやすいのかも (旅行記はあまり来ない)。
Akismet に頼ってもいいのですが、コメント ID がインフレするのは少し癪です。そこで、明らかに不正だと思うコメントを排除すべく対策を打ちました。
その1: コメント受け付けスクリプトの移動
WordPress はコメント受け付けスクリプトが “wp-comments-post.php” というファイル名で決め打ちです。したがって、スパマーは、このファイルをターゲットにいきなり POST メソッドでアクセスすればいいわけです。
そこで、スクリプトのファイル名を変更し、それに合わせてテーマの comment.php にある action 属性 (コメント送信先) を変更しました。さらに、.htaccess で wp-comments-post.php へのアクセスを 403 Forbidden にしました。ちょっとは効果がありましたが、すぐにスパムが来るようになりました……。
その2: リンクを拒否
スパムコメントのほとんどは、2つ以上のリンクがあります。HTML で a 要素を使っている場合と bbcode で [url=...] 記載をしている場合の2種類あります。そこで、wp-comments-post-XXX.php (リネーム後のコメント受け付けスクリプト) にて、そういう場合にエラーを出すようにしました。マルチバイト文字があると予想される場合は、日本語でエラーをインライン表示 (スクリプト末尾の catch 節に飛ばす)、そうでない場合は wp_die によるエラー表示としています。
if (preg_match('/\[url[=\]]https?:/', $comment_content) || preg_match_all('|https?://|', $comment_content, $links) >= 2) { if (preg_match('/[\x80-\xff]/', $comment_content)) { throw new Exception('エラー: コメントに不正なリンクがあります。'); } else { wp_die('Error: Bad links in content.'); exit; } }
その3: 念のため wp_nonce も入れる
上記対策で十分と思われますが、念のため wp_nonce によるチェックを入れて、コメントフォームからの投稿以外を弾くようにしました。まず、テーマの comment.php で以下のコードを入れます。
<?php wp_nonce_field('post-comments_' . $id); ?>
次に、wp-comments-post-XXX.php で nonce をチェックします。先頭近く、$comment_post_ID
を取得した直後がいいでしょう。
if (! isset($_POST['_wpnonce']) || ! wp_verify_nonce($_POST['_wpnonce'], 'post-comments_' . $comment_post_ID)) { wp_die('Error: Please back to comment form, and retry submit.'); exit; }
ここまでやれば、wp-comments-post.php 直接攻撃は避けられるでしょう。あとは、日本語文字列を含まない場合を拒否するコード (懐しの SOMY SpamBlock JP みたいなもの) を入れるかどうかです。
[追記] 「その3」をプラグイン化したものが「Nonce! Please」です。
Ktai Style 1.3.0 の予定
WordPress ME サポートやエイプリルフールで時間が取られていましたが、Ktai Style も少しずつ改良しています。来週ぐらいにリリースしようと思っています。主な機能アップは以下の予定です。→リリースしました。
- WordPress 2.0.x にも対応 (閲覧のみで、管理機能は使用不可)
- 携帯対応のブログサービスへのリンクは、中継ページを出さずに直接ジャンプ
- 外部サイトのリンクで、a 要素に class=”ktai” を追加した場合、中継ページを出さずに直接ジャンプ
- コメント時に端末識別情報必須の場合、iモード ID を取得 (端末 ID 取得と違ってダイアログが出なくなる)
- 自作の携帯テーマファイルは wp-content/ktai-themes/ ディレクトリー配下に入れるようにした (従来の場所も認識します)。
- 自作テーマで、独自の menu_XXX.php ファイルを作った場合、?menu=XXX で呼び出せる。例えば、menu_events.php で「直近のイベント」というページを作るという技がある。
- 携帯キャリアのIPアドレス帯域からアクセスしているかの判別に対応
どちらかというと地味な機能アップです。WordPress 2.0 対応ですが、閲覧だけならばさほど修正しなくても使えることが判明したので、管理機能は無効として対応することにしました。せっかく ME 2.0.x サポートをすることにしたので、こちらのユーザーさんにも使ってもらいたいですから。でも、PHP5 が必須ですよ (PHP4 対応は困難です)。

その他のハック予定
Ktai Style 以外のプラグインについても、WordPress 2.5 対応を含めた修正が必要ですね。
- JSeries Notifier
- 現状では、WordPress 2.5 で更新通知が英語メッセージになるという問題があるため、修正が必要です。自動アップデートに対応していないプラグインがありそうですが、「自動アップデートしますか」の文言も出してしまいましょうか。
- Lightweight Google Maps
- 固定ページで位置情報を付与した場合、地図ページでマーカーが出るようにする対応/同じ地点で複数のマーカーがある場合タブ付き吹き出しを使う対応/Lat_Long カスタムフィールドの数値修正に地図を使えるようにする対応 (現状、別途 Google Maps を出して緯度経度を測るしかない)、などを考えています。
- wp-mta
- wp-shot と統合させた新プラグインにする予定ですが、開発がまったく進んでいません。wp-shot はインストールと設定が少々ややこしいですが、新プラグインはかなり簡略化される予定です。メール取り込み用メールボックスとして Gmail を推奨予定ですが、この場合は携帯絵文字にも対応できそうですね。「メール投稿でも絵文字が使える」となると、かなりのアドバンテージになる??
- Ktai Location
- イー・モバイル H11T に対応して「バージョン 1.00」にするつもりでしたが、GPS 機能が貧弱で、メールで地図 URL を送ったり写真の EXIF に GPS 情報を埋め込んだりできないので、対応不可。現行バージョンのままでよさそう。
- KtaiLoc2Otenki
- 初期バージョン 0.7.0 が非常に安定しているようですが、実はアップグレードを検討しています。XML の解析方法を泥臭い方法 (wp-eznavi から引き継いだコード) にしていますが、wp-otenki では miniXML を使っているため、同じ方法を採用しようかと思っています。当プラグインは wp-otenki との連携が必須なため、wp-otenki に同梱されている miniXML を使えばいいし。
- Weather Journal
- WordPress 2.5 において、少し問題があるため修正が必要です。編集画面に挿入した天気フィールドの見た目が WP2.5 に適合したものではないこと、新しい日付の投稿を作ったとき、天気が「(設定なし)」にならず、晴れとかくもりとか適当な天気になってしまうこと、が問題です。
- その他
- Yuriko.Net の WordPress 2.5 化に際して開発したプラグインも、ドキュメントを整備して公開するか検討しています。パーマリンクを完全にカスタマイズするプラグインは、他のウェブログからの移行や、CMS としての利用に有用かもしれませんし。
[追記 2008-04-06] Weather Journal について言及してなかったので、追加しました。