月: 2005年11月

PHP 5.1.1がリリースされました

標準でDateクラスはまずいでしょう、と思っていたのですがやはりクレームが沢山ありました。Dateクラス問題解消のために5.1.1がリリースされた、と言っても良いと思います。safe_modeがデフォルトOnになったにも関わらずcURLのsafe_mode時の動作がまずい、HTTPダイジェスト認証の動作が異なる、という問題も速いアップデート版リリースの一因です。

備考1:標準でDateクラスが定義されるようになった、と言うことは自前でDateクラスを持つコードは5.1では動作しない事を意味します。

備考2:普通はDIGEST認証は使いません。クライアント任せの部分があり互換性に問題があるからです。とは言ってもイントラネットなどでクライアント決め打ちでDIGEST認証を使っている環境では動作の違いは致命的です。

追記:
getenvでエラーが出たのは–enable-safe-modeを指定していたのと同じ状態だったようですね。わざわざこのオプションを付けた記憶はないのですが(というより指定してコンパイルした事がない)ちょっと条件は分からなくなってしまいましたが–with-apxs2を指定しているのにlibphp5.soが生成されなくてmake installでlibphp5.soが所定の場所にインストールされず、ハマリそうになりました。生成された./configureスクリプトが変だったのかな?

不良コンデンサ問題

CNet Japanによると不良コンデンサが大きな問題になっているようです。

今回問題になったのは、色が黒と金の2色で、長さ約2.5センチの低ESR(等価直列抵抗)アルミニウム電解シリンダというキャパシタで、側面に HN(M)およびHM(M)のマークがあり、上部には「X」の文字が刻印されている。このキャパシタは一部のマザーボードやビデオカード、さらにPC、モニタ、ビデオデッキ、テレビなどの電源にも採用されている。

7年くらい持つはずが3,4年で不良になるそうです。気になる方は問題のコンデンサの写真も載っています。iMac G5, Dell OptiPlex, HP wx等で問題のコンデンサが使用されている事が分かってるそうです。

これらの不良キャパシタには、膨張、突出、流出、硬化などの現象が発生し、その結果画面の表示がおかしくなったり、断続的にシステムが停止してしまうことが明らかになっている。

調子が悪くなったらHDD、メモリチェック、のみではなくコンデンサチェックも必要なのですね…

カレンダーナビゲーションリンクの作り方

人が作ったシステムを見ていると色々気付かされることがあります。b2evolutionのカレンダーなどのナビゲーションリンクはエントリが無い未来・過去の日付もだどれる様になっています。私は、特定の場合を除き、通常表示できるデータがある範囲だけリンクが表示されるように作ります。

このb2evolutionのナビゲーションの仕様はデータベースには優しい仕様ですが、検索エンジンのインデックス作成robot等には優しい仕様ではありません。例えば、あるロボットは3000年のエントリくらいまで検索していってくれます。当然役立つ情報はなく「申し訳ありません。表示する投稿がありません…」と表示されるだけです。アクセス統計情報、SEO的にも問題ではないかと思います。

データベースと連動したサイトを構築する場合にはロボットによる無限検索のリスクを考えないとならないです。データベースにも検索エンジンにも優しいカレンダーナビゲーションにするにはデータベースに新たなエントリ追加があった場合にナビゲーション用データをキャッシュする仕組みにすると良いと思います。

b2evolutionのコメントスパム削除

このブログ(b2evolution)にコメントやトラックバックがあった場合、メールで通知されます。しかし、通知されたメールに記載されている削除/編集用URLをクリックしても必要なデータが表示されません。コードを詳しく追いかけていないので根本的な対処ではありませんが、以下の変更でメール記載されたURLでコメント/トラックバックを表示し編集できるようになります。これでスパマーのキーワード登録も簡単になります。(b2evolutionは結構前からスパムデータベースを共有できるようになっています)

admin/_edit_showposts.phpの変更箇所(行頭の数字は行番号)

59 //$MainList = & new ItemList( $blog, $show_statuses, $p, $m, $w, $cat, $catsel, $author, $order, $orderby, $posts, $paged, $poststart, $poste nd, $s, $sentence, $exact, $preview, '', '', $timestamp_min, $timestamp_max );
60 $MainList = & new ItemList( $blog, $show_statuses, $p, $m, $w, $cat, $catsel, $author, $order, $orderby, $posts, $paged, 0, $postend, $s, $se ntence, $exact, $preview, '', '', $timestamp_min, $timestamp_max );

私はあまり使わないのですが「編集」のページで以前に書いたエントリを表示出来なくなるようです。他にも副作用があるかも知れません。取り合えず溜ったコメント/トラックバックスパムの削除が面倒だったので上記の変更をしました。

ところで0.9.1からrel=”nofollow”が付く、とb2evolutionのサイトに記載されているのですがrel=”nofollow”はメンバーのコメント等にのみ付いているようです :(

構造計算書偽造とインターネットに接続されたシステムの類似点

マンション等の構造計算書を偽造した事件が大きな話題となっています。偽造した構造計算書を作成した設計事務所の設計士が「コストを安くしないと仕事をもらえないと思った」、建築業者が「施行主の指示の問題の建築事務所を利用した」等を発言していると聞きインターネットに接続されたシステムに類似点があることが気になりました。

本来Webサイトは「安全」である事に重点をおいて構築されなければならないですが現実はそうではありません。インターネットのシステムの場合、他人の生命に影響するようなシステムはほぼないこと、財産に大きく影響するシステムもネットバンキングやネット証券のようなごく一部のシステムしかないことから「安全」に対してそれほど大きな注意が払われていない事がよくあるようです。実際、比較的有名なサイトのセキュリティ管理が、ごく基本的なセキュリティ管理さえ行わず、非常に悪い状態にあった事例が多くあります。少し古い話になりますが、日本の著作権関連会社の代表者が、安全なWebサイトでなければサイトを公開できなければ中小の企業はWebサイトを公開できないではないか、といった旨の発言をしたという記事もありました。”組織として中小なんだからセキュリティ対策が出来ていなくても当然”と開き直ってよい物ではありません。建物が倒壊すると建築主以外にも被害が発生するように、インターネットシステムの安全性が確保できていないと他人を攻撃する踏台にされ他人に大きな迷惑をかける事になる場合もあります。

安全なシステムを構築するには、安全性を考慮しないシステム構築より多くの費用が必要となるのは明らかです。しかし、Webシステム開発の場面でも「コストを安くしないと仕事をもらえないと思った」や「発注者の指示で必要なセキュリティ対策が施せない(施さない)」ケースは非常に多いのではないかと感じます。システム構築は建物の建築とは違い安全性が十分であるか確認する仕組みが無いため、より状況が悪い事はこの業界の方でなくても分かると思います。

プロによって作られた物が「安全」であることが当り前ではないという類似点が構造計算書偽造事件とインターネットのシステムにあります。安全性に問題が発生する背景にも類似点があります。この状況を変えるには発注者と受注者、”両方”の意識を変えなければなりません。

# プロが作っている物でも驚くような仕様になっている場合
# があります。インターネットとは関係の無い古い例で
# すが、1985年以前に作られた銀行のキャッシュカードには
# 磁気テープにカードの暗証番号が保存されていた物がある
# そうです。
# インターネットのシステムでこれに類するような事例は多
# くあります…

Web 2.0

メモとして。Tim O’ReillyのWeb 2.0論文の邦訳がCNet Japanに掲載されている。

元はこちら
http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html

リンク:
http://www.oreillynet.com/pub/a/network/2005/10/27/distributing-the-future.html
http://www.onjava.com/pub/a/onjava/2005/11/02/community-of-web-20.html

新しいようで古いフィッシングの手口

”「捨てアド」取りを目的とした新手のフィッシング”としてIT Mediaで紹介されていましたが、新しい手口ではありません。CAPTCHA方式の人間認証(プログラムではなく人間であることを確認する事。このような用語は見た事がないので私製造語かも)を破る方法として同様の手口が即座に考案されています。私がこのブログで紹介した(「グラフィックテキストも安全ではない」)のは最近の事ですが随分前から知られている手口です。

IT Mediaの記事で目新しいのはわざわざ攻撃が発覚しやすい銀行サイトを利用している事ですね。しかし、私がスパマーだとしたら銀行サイトやその他まともはサイトをフィッシングには利用しないと思います。「私はスパマーだ。見つけてくれ」と言っているような物ですよね。

マルチブート環境の構築ページを更新

WikiにGRUBのChainloader(別のブートプログラム呼ぶ機能)を利用したマルチブート環境構築のページがあります。デバイスIDが間違っていた部分がありました。比較的参照数も多いようなのでここでも修正した事を書きます。もし参考にされた方がいらしたら修正したのでご覧ください。

私のデスクトップPCには3、4つのLinuxディストリビューションがインストールされているのが普通の状態なのでchainloaderを使ったマルチブート環境にしています。前にGoogleで検索してもこの手のマルチブート環境の構築手順が書いてなかったのでこのページを作りました。WindowsのNTLDRやGRUBの/bootパーティション共有を使ったマルチ・デュアルブートよりはるかに使いやすいです。興味のある方は是非どうぞ。

VMware Playerで新しいVMの作成

VMware Playerで新しいVMの作成、と言う話ですがこの問題(?)はVMwareは知りつつVMware Playerをリリースしているのだと思います。VMware Playerのみでは色々使いづらいので本格的に使うにはVMware Workstationが必要になり、さらにサーバで使うにはGSX Serverなど使う、などのマーケットがあるのでそれで良い、という考え方なのでしょう。

元になる仮想マシンのファイルさえあれば、ファイルをコピーした後に新しいOSをCD/DVDデバイスからインストールする、という単純な手順で新しい仮想マシンに新しいOSをインストールできます。

私がVMware Playerを使ってみた感想
http://blog.ohgaki.net/index.php/yohgaki/2005/10/22/vmwareplayer

register_globals=onが必要なアプリ対策

register_globals=onで運用しなければならないアプリケーションはまだ結構あるようです。古いPHPには

http://blog.ohgaki.net/index.php/yohgaki/2005/11/09/phpa_rc_fei_a_oa_oa_fa_sa_le_acsa_oe_afp_2

の$GLOBALS改ざん問題がありますが、アプリの動作検証などには時間が必要です。snortを利用してIPSを作る方法もありますがPHPで対応する簡単な方法を紹介します。(注:完全な対策ではありません)

b2evolution日本語パッチ

b2evolutionは国際化を考えてはいるのですがマルチバイト文字処理は不十分です。

http://cha.s57.xrea.com/blogs/index.php/2005/09/17/p74

に日本語環境用の変更箇所がまとめられているのですが、パッチがある方が便利なので上記のURLの変更箇所をパッチにまとめました。

このブログもやっと日本語の文字化けが無くなります。