Categories: Webシステム開発, ZendFramework
オープンセミナー2009@岡山
May 12th, 2009今年もオープンセミナー2009@岡山を5月30日に岡山県立大で開催します。
午前は軽いライトニングトークと勉強会風のセッション、午後はセミナー形式のセッションになります。車で来る事もできるのでお気軽に参加下さい。
http://os2009.okaya.ma/wiki.cgi?page=%B3%AB%BA%C5%B3%B5%CD%D7
Canonicalで重複URLを統一
February 27th, 2009http://googlewebmastercentral.blogspot.com/2009/02/canonical-link-element-presentation.html
では、サーチエンジンに登録されるURLをまとめる為に
<link rel="canonical" href="http://example.com/page.html"/>
というタグをheadに埋め込むとあります。この仕様は
http://journal.mycom.co.jp/news/2009/02/26/018/index.html
によると、Google、Yahoo!、Microsoftの三社で合意されたそうです。
このブログも
http://blog.ohgaki.net/
http://blog.ohgaki.net/index.php
http://blog.ohgaki.net/index.php?no_such=value
等のURLでアクセスできるのですが、
<head>
<link rel="canonical" href="http://blog.ohgaki.net/ "/>
</head>
と入れておくと同じURLとしてサーチエンジンで処理してくれるそうです。
Zend_Toolの使い方 - パスに入れない
January 30th, 2009Zend_ToolのzfコマンドがZendFrameworkのバージョンによって使えたり、使えなかったりする問題で困っていたのですが原因が分かりました。
Zend_Toolのzfコマンドでプロジェクトを作成すると
$ zf create project
ZendFrameworkのファイルをカレントディレクトリのlibraryに全てコピーします。プロジェクトの雛形にはapplication/boostrap.phpが含まれ、ここでinclude_pathが設定されます。boostrap.phpは、エントリポイントとなるpublic/index.php
// @see application/bootstrap.php
$bootstrap = true;
require '../application/bootstrap.php';
から毎回必ず呼ばれるので
// you may wish to add other paths here, or keep system paths: set_include_path('../library' . PATH_SEPARATOR . get_include_path()
set_include_path('../library');
ZendFrameworkのアーカイブはどこに展開しても構わないようになっています。
この事は知っていたのですが、zfコマンドを使わないでZendFrameworkを使えるよう、PEARをインストールしたディレクトリにlibrary/Zendディレクトリをコピーし、デフォルトのphp.iniでinlcude_pathに設定してZendFrameworkを使うようにしていました。
これがどうもダメだったようです。Zend_Toolのディレクトリ構成を見て、似通った構成だったのでもしかして、と思いinclude_path設定を変えて試してみました。すると動かないと思っていたバージョンでもzfコマンドが動作するようになりました。インクルードパスにZendFrameworkのライブラリをパスにいれると、意図しないスクリプトが読み込まれてエラーになったりしていたようです。中途半端に動く物もあったりしたのでですが「previrew版だから仕方ないか」と思って詳しく調べていませんでした。これで一つすっきりしました。
Zend_Toolを試す場合、ZendFrameworkのZendディレクトリはinclude_pathに入れないようにした方が良いようです。基本的な事ですが、探しても情報が見つからなかったので書いておきます。
In Session Phishing
January 28th, 2009Link: http://www.trusteer.com/files/In-session-phishing-advisory-2.pdf
In Session Phishingという興味深いアドバイザリが公開されています。
具体的な記載はありませんが、現在広く利用されているInternet Explorer, Firefox, Safari, ChromeでJavaScriptを利用するとユーザが特定のサイトにログインしていたか判別できるようです。
Recently Trusteer CTO Amit Klein and his research group discovered a vulnerability in the JavaScript engine of all leading browsers - Internet Explorer, Firefox, Safari, and Chrome - which allows a website to check whether a user is currently logged onto another website. The source of the vulnerability is a specific JavaScript function. When this function is called it leaves a temporary footprint on the computer and any other website can identify this footprint. Websites that use this function in a certain way are traceable. Many websites, including financial institutions, online retailers, social networking websites, gaming, and gambling websites use this function and can be traced.
ユーザが訪問したことがあるサイトを検出する方法はあります。訪問済みのURLは色が変わることを利用して検出します。マーケティング目的で実際に利用されています。しかし、この方法ではユーザが実際に今ログインしているかどうかは判別できません。アドバイザリによると、ログインしているかどうか判別できる足跡が検出できる、としています。
自分がサイトにログインしている最中に「現在、攻撃されている可能性があるので再ログインをしてください」とメールを送ればより効果的なフィッシングが行えます。
もうしばらくすれば詳細が明らかになるかも知れませんが、最近のブラウザ全てに影響するようなのでJavaScriptやDOMの仕様に関係する問題の可能性が高いです。その場合は簡単に修正できない可能性がかなり高いのではないかと思います。
フィッシングでなくてもマーケティング目的で利用されそうな気もします。
PHP:既知のセキュリティ脆弱性 - Session Adoption
January 27th, 2009PHPには広く知られているにも関わらず放置されている既知のセキュリティ脆弱性が幾つかあります。その一つがセッションモジュールのセッションアダプション(Session Adoption)脆弱性です。この脆弱性は現在広く利用されているWebアプリケーションの安全性に、非常に大きな影響を与える脆弱性です。
セッションアダプション脆弱性とはセッション固定化攻撃を可能とする脆弱性の一種です。セッションアダプションに脆弱なセッション管理システムは、ユーザ(ブラウザ)が送信してきた未初期化のセッションIDを受け入れ、セッションを初期化してしまいます。PHPに限らず、RailsやJavaのフレームワーク等、多くのWebフレームワークに発見されている脆弱性です。
セッションアダプション脆弱性を利用すると、攻撃者は長期間に渡って他人のIDを使う成りすましが可能になる場合があります。IDを盗みたい犯罪者には利用価値の高い脆弱性です。
この脆弱性は、10年以上前から問題視されている国別TLD(ccTLD)の属性ドメイン(国別Top Level Domain, co.jp, or.jpなどのドメイン)にも下位ドメインからクッキーが設定でき、サブドメインのクッキー設定が無視される(送信順序、優先順位がいい加減)、というとんでも無いクッキーの仕様と組み合わせると、大量の他人のユーザセッションIDを取得(設定)し、成りすます事ができます。
セッションアダプション問題は全てのPHP、PHP 4.4.9/PHP 5.2.8/PHP 5.3/PHP 6.0に共通する脆弱性です。
最近、影響範囲はかなり狭くなりましたが、まだまだ注意が必要な脆弱性であり、根本的な解決にはパッチと適切なセキュリティ対策が必要です。
ZendFrameworkで作る『イマドキ』のWebアプリケーション
January 20th, 2009Link: http://gihyo.jp/dev/serial/01/zf-ajax
技術評論社さんのPHPセキュリティ関連のブログ、なぜPHPアプリにセキュリティホールが多いのか?も執筆させて頂いていますが、新しくZendFrameworkで作る『イマドキ』のWebアプリケーションも執筆させていただくことにになりました。
今回の連載では私のブログでフィードバックや質問をお聞きしようと考えています。一般的な質問はMLなどでお聞き頂けるようお願いしますが、動作しない、動作がおかしい、説明がわかりづらい、これを説明してほしい、など記事に関連するご意見やご質問をお待ちしています。
Wikiにサポート用のページも用意しました。Wikiにはまとめや必要なリソースへのリンクなどを掲載します。
http://wiki.ohgaki.net/index.php?ZendFramework-Web-Application
今回、連載を開始するにあたりLinux, Mac, Windowsでできる限り同じ環境が作れるように工夫してみました。
当初はXAMPPをベースとした環境にしようと思ったのですが、64bit版が用意されていないのは現在のPC環境を考えると好ましくありません。そこで、PostgreSQLのバイナリ配布版であるPostgreSQL One-Click Installerを利用した環境を利用することにしました。PostgreSQL One-Click Installerを利用すると、Linux, Mac, Windowsでほぼ同じApache/PHP/PostgreSQLの動作環境を構築できます。
CentOS5を利用している環境が公開可能であるため、VMwareイメージも公開しています。VMwareイメージには以下のパッケージが含まれ、必要な設定が行われています。
- CentOS 5.2
- Apache 2.2
- PHP 5.2
- ZendFramework 1.7
- PostgreSQL 8.3
- Eclipse 3.4
- Mercurial 1.1
ダウンロード先など、詳しい情報はWikiをご覧下さい。
乱数生成器の取扱い - PHPとPython
September 24th, 2008Stefan Esser氏のブログでmt_srandとそれほどランダムでない乱数(mt_srand and not so random numbers)というエントリが8/17に掲載されています。気になっていたのでPythonの実装も調べてみました。
Webセキュリティ - 正しい認識が必要
September 13th, 2008大規模なWebサイト構築を行っている方ならF5にお世話になっている方も多いでしょう。F5のブログで私と全く同じ意見のブログ - Why it's so hard to secure JavaScriptを見つけたので紹介します。
JavaScript無しでフォームをコントロール
September 3rd, 2008言われてみれば、そう言えばそんな機能があったね、と思うような機能はよくあります。
JavaScript無しでフォームを制御する方法はHTML4が策定されている時に追加された機能です。
Tomcatの管理者は大忙し?
August 22nd, 2008http://www.milw0rm.com/exploits/6229
などはまだいいですが
http://www.0x000000.com/?i=630
こういうのは、本当に使ってしまう輩がいそうで怖いです。
どうしても直ぐにバージョンアップできない場合、WAFは役に立ちます。今回の場合、
でも十分です。そう言えば、直ぐに使えるPoCを公開している
は簡易WAFも紹介していたサイトです。簡易WAFを使いましょう、と言いたいのかも知れません。


