Category: b2evolution
ブログらしくブックマークなどに登録してもらう為のリンク追加
February 10th, 2008たいした事を書くつもりが無かったので、読んでみたいと思っていただいた方や検索エンジンから見つけて読んでいただける方だけで良い、とブックマークサービスなどに追加するボタンを付けていませんでした。時代が時代なので遅ればせながら付けてみました。
# と言っても自分自身はソーシャルブックマークサービスを利用していません。
# 問題があったら教えてください。
このブログに貼付けたボタン/リンクは、以下のサイトとURLから生成したかURLの情報を参考に作成しました。
他にこれもというサイトがあれば教えてください。リモートのJavaScriptを読み込まないサービスであれば追加したいと思います。
ロケール問題を修復
February 1st, 2008先日b2evolutionのアップグレードを行った際にロケールファイルの設定に漏れがあり普通に参照すると強制的にISO-8859-1への変換が行われ、????となってしまっていました。
この辺りの仕様はおかしな所もあるので、普通に動作するようパッチを書いて送る事にします。
問題をご連絡頂いた皆さん、ありがとうございました。
追記:
ついでに前から気になっていたURLも修正しました。
http://blog.ohgaki.net/index.php/yohgaki/article
といった感じでしたが
http://blog.ohgaki.net/article
でアクセスできるようにしました。もちろん前のURL形式でアクセスしてもリダイレクトで表示できるようにしています。
追記:
さらにRefererスパム防止機能のため、はてなブックマークからのリンクをクリックするとSPAM防止用ページが表示されていました。この機能を無効にしたので「はてな」からもアクセスが容易になりました。問題を教えてくださった方、ありがとうございます。
エントリのコメントに評価をつけてみました
January 24th, 2008最近のb2evolutionのフィードバック(コメント)には評価を記録できるようになっているので有効にしてみました。辛口評価コメントも歓迎です。どれが役に立ったのか、立たなかったのか、などはいろいろと参考になります。
「書かない日記」の「書かない」には
- 詳しく書かない
- あまり書かない
- きちんと書かない
の3つの「書かない」の意味があるのですが酷すぎる場合はコメントを入れていただければそのエントリ分の追加は努力します。
と書いて今思い出しました。DNS Rebinding攻撃の書きかけエントリに追記するのを忘れていました...
追記:
試しに入れてみるとフィードバックとして取り扱われるのでモデレートされます。SPAM以外は全部公開しているので安心(?)してください。公開してほしくないコメントの場合、非公開で、と書いておいてください。
このブログのIE6でのレイアウトの崩れを修正
December 26th, 2007一応IE6/IE7でこのブログを自分で見た事があるのですがオーバーフローが発生した場合のページを見ていませんでした。b2evolutionに付属してきたevopressテンプレートのスタイルシートをそのまま使用しているのですがIE6でIE6/Firefox/Opera等と同等に表示するためにblockquoteのCSS定義に
width: 400px;
overflow: hidden;
追加しました。IE6の方は一つ前のエントリなどは非常に読みづらかったと思います...
# 今使っているのは2.2.0Beta版なので多少の不具合は仕方ないです。
時間があれば自分でスタイルシートを確認したいところですが当分その時間がとれそうにないです。問題があったらぜひ教えてください。下のContactリンクからWebフォームから送信できます。
ブログアプリを更新
November 24th, 2007ちょっと試してみたらb2evlution 2.1.0 betaでも結構まともに動作するようなので1.10.3から2.1.0 betaにしてみました。
B2Evolution
http://b2evolution.net/
前の設定ファイル
conf/_basic_conf.php
をコピーして、ロケールファイル
conf/_locales.php
にutf-8を設定し、インストール用スクリプトを実行しただけです。
# この環境は全ての文字エンコーディングをUTF-8に統一しています。
スキンの互換性は無いので作り直す必要があります。
あまりテストしていないので問題があるかも知れません。問題があったら教えてください。
追記:
メール送信には以前にあった問題があったのですが、仮想サーバ単位で設定していたmbstring.languageとmbstring.func_overload設定を削除するとUTF-8形式で正しくメール送信できるようになりました。これは前の環境でも同じ設定を行うとメール送信に問題がなくなるのかも知れません。
RSSのURLが変わったような気がします。Atom, RSS1でRSSで購読されている方はURLを変更してください。
リンクが正しく表示されない状態をかなり長く放置していたのですがバージョンアップで直ったようです。日本語テキスト中のWikiへのリンクなども正しく表示できるようです。
ちなみにこの環境は
- Apache 2.0.61
- PHP 5.2.5
です。
前のバージョンのb2evolutionはあまりお勧めできるものでは無かったですが、2.1.0は日本語環境でもかなりそのまま使えるような感じです。
パッチを提供すべきか、移行すべきか、自分で作るか...
August 12th, 2007このブログを利用し始めた当時、b2evolution以外でユーザからの入力をホワイトリスト方式でチェックしているアプリが見つからなかったので採用しました。しかし、最近のバージョンは日本語環境での利用には問題があります。ハイパーリンクを付けるとそれ以降が表示されない、ロケールの処理に問題があり文字化けする、等です。
この問題に対応するためには
- パッチを提供
- 別のアプリに移行
- 自分で作る
のオプションを考えています。
パッチを提供する場合、直したい個所(というより設計レベルでの変更)が沢山あります。コミュニティに貢献するにしても思っている方向性にプロジェクトを誘導するのはかなり骨が折れる作業になると思います。
# とは言っても結構長い間(2004年以降)お世話になっているの
# で貢献するオプションも捨てがたいです。
そこで別アプリ、と言う事でserendipityを見てみました。古いバージョンのb2evolutionからの移行するプラグインも付いていたので、多少手直しすれば移行できそうでした。しかしserendipityにはトラックバックを無効にするオプションが無いです。簡単にトラックバックを無効にするように修正できますがバージョンアップの度にパッチするのも面倒です...
最後のオプションは自分で作る、ですがこれだけいろいろブログアプリがある中、自分で作るのもいかがな物かと考えてしまいます。暇であれば作っても良いですが、全然暇が無い状態なのでなおさらです。
さて、どうしたものか....
HTTP_ACCEPT_CHARSET/HTTP_ACCEPT_LANGUAGEの取り扱いバグ
August 9th, 2007b2evolutionをいい加減アップグレードしておかないと問題があっても困るのでアップグレードしました。HTTP_ACCEPT_CHARET/HTTP_ACCEPT_LANGUAGE処理の不具合がまだなおっていないようです... 日本語のように単語区切りがない言語(または正規表現の文字エンコーディング設定)の不具合も直っていないようです。
昨日から今日までMac版のFirefoxなら正常に表示、Win版だとISO-8859-1になって文字化けしていました。(多分IEも同様だったはず)
文字列の比較はできるかぎり厳密に行う方が良いですがHTTP_ACCEPT_CHARSET/HTTP_ACCEPT_LANGUAGEの比較では大文字/小文字を無視した方が無難だと思います。Win版Firefoxがへんな値に設定しているとは思いますが、統計アプリなどでみるとかなり変わったエンコーディング名になっている場合もあるようです。
エンコーディングをUTF-8で統一しているなら
conf/_locales.phpを以下に設定し
$evo_charset='utf-8';
$force_io_charset_if_accepted='utf-8';
$db_config['connection_charset']='utf-8';
$default_locale='ja-JP';
必要ないような気もしますがこのファイルに定義してあるlocaleでiso-8859-1エンコーディングは全てutf-8に変更しました。
inc/MODEL/settings/_locale.funcs.phpのinit_charset関数でなにもせずにreturn
function init_charset( $req_io_charset )
{
return;
すれば文字化けは解消します。
追記:
これでもISO-8859-1になって文字化けするケースがありますね... 時間がないので場当たり対処策としてindex.phpの最後に
header('text/html; charset=UTF-8');
を追加しました。ロケールの処理にはいろいろ問題があるようです。どこかで無理矢理ISO-8859-1にするくらいならデフォルトUTF-8にしておけば良いと思います。
さらに追記:
上記の変更を行うとRSSフィードのXMLエンコーディングの部分が空になり、XMLエラーとなってRSSリーダが処理できない不具合が発生する事が分かりました。ソースを見れば一目瞭然で文字エンコーディングを指定する変数が空であることが原因でした。
conf/_basic_conf.phpに
$io_charset='utf-8';
を追加すると直ります。アップグレードマニュアルにはこのファイルは前のファイルで上書きするように、と書いてあったのですが追加設定が必要だったのかも。
b2evolutionバージョンアップ
January 27th, 2007Link: http://b2evolution.net/news/2007/01/22/b2evo_1_8_7_and_1_9_2_released
セキュリティ問題の修正を含むアップグレード版がリリースされています。
http://b2evolution.net/news/2007/01/22/b2evo_1_8_7_and_1_9_2_released
「意味がある形での攻撃は難しいだろう」と書いてありますがアップグレードしておいた方が良いと思います。
正規表現がおかしてくリンクが正しく表示されない問題は直っていないですね。
b2evolution 1.8.6にXSS脆弱性
January 15th, 2007Link: http://nvd.nist.gov/nvd.cfm?cvename=CVE-2007-0175
このブログのb2evolutionは1.9.1なので、1.9.1のコードを確認してみたところ、1.9.1にも厳格な入力チェックが行われていないなど、確かに好ましくない処理が行われていました。XSSと言うよりHTTP Response Splittingに脆弱なコードになっていました。
攻撃を成功させるには幾つかの条件が必要でした。
- 普通のクロスサイトスクリプティングであるため、ログインするページを表示する場合に他人が用意した罠ページのログインリンクをクリックしないとならない
- その後、ログイン操作を実際に行わなければならない
- PHPのバージョンが古くheader関数が脆弱である
特に重要なのはPHPのバージョンが古くなければならない点です。PHP 4.4/PHP5.xなら問題ありません。このサーバで利用しているPHPも大丈夫なので対処は行っていません。
例えばRHEL 4はPHP 4.3なので攻撃が成功するかも知れません。(パッチを確認すれば脆弱性を攻撃できるか直ぐ分かるのですが未確認)いずれにせよ、公開用のPHPスクリプトを書く場合、比較的古いバージョンのPHPも広く利用されている事を前提にコーディングしなければならないです。
この脆弱性の危険度はCVEでHighになっていますが、SecuniaではLowになっています。どちらに設定するかは微妙なところです。環境が古ければ「非常に危険」と考える事もできますが、現在PHPプロジェクトが正式にサポートしているバージョンは4.4と5.2で両方とも影響を受けません。
話は変わりますがb2evolution 1.9.1は使わない方が良いかも知れません。正規表現に問題があるらしくアンカータグが正しく処理できない事がよくあります。本家サイト見るとサポートされているバージョンが1.8系と1.9系だけになっているのでバージョンアップを考えている方は1.8系を先に試す事をお勧めします。1.8.6で正しく表示されるかどうかは検証していませんが、少なくとも1.9.1は問題が多いです。
新手のBlogスパム
December 9th, 2006前のバージョンから「ひらがな」フィルタを使って海外からのコメント・トラックバックスパムを削除していたのですが、敵も気が付いてきたようでタイトルのコピーを入れたスパムを送ってくるようになりました。
スパムを送ってくる業者はページランクが上がれば良いので同じ言語であるかどうか関係なくスパムを送っていると思われます。日本語サイト以外でも言語フィルタをつけたサイトが増えてきているのかも知れません。
「ひらがな」フィルタの効果は絶大だったのですが、タイトルのコピー・本文の一部をコピーされたスパムの場合、ほぼ無力に近いです。blogアプリをアップグレードしてる半日程度の時間、平仮名フィルタが無かっただけで900くらいのトラックバックスパムが着てしまいました。半分だけでもタイトルや本文のコピーをつけてSPAMを送られてきたらモデレートなんて不可能です。そのうちまた新しい手法が必要になりそうです。やはりGeoIPかな... あまりやりたくない手法ですが...


