Development
もうバージョンアップで困らない – PROVE for PHP
昨年のPHPカンファレンスで紹介したPORVE for PHP 開発版の公開を始めました。PROVE for PHPはこんなテストが出来ます。 PHPをアップデートしてアプリに影響が無い事を検証する PHPアプリをアップデートしても以前と同じように動作する事を検証する 使い方もとても簡単です。 テストケースの作成はブラウザからアプリを利用するだけ ロードバラ…
phpのescapeshellcmdの余計なお世話を無くすパッチ
徳丸さんのブログでescapeshellcmdの余計なお世話の件が指摘されていたのでパッチを作りました。これmagic quoteと同じレベルの余計なお世話なのですが放置されています。個人的にはどのような関数にも全てバリデーション済みの文字列しか渡さないのでセキュリティ問題は発生しないのですが、UNIX系OSではペアとなる"と'はエスケープしない仕様に気が付…
gihyo.jpのRasmusさんインタビューの補足
私がインタビューアーと執筆を担当させて頂いたRasmusさんへのインタビュー記事は好評だったようです。 http://gihyo.jp/news/interview/2010/rasmus この記事の中で「美しいツールは美しい問題を解決するためには非常に効果的かも知れませんが,多くの場合は必要がありません。さまざまなルールを作り,フレームワークを使い,モデル…
PHPカンファレンス2010 ビジネスデイの講演資料(PORVE for PHP)
PHPカンファレンス2010ではビジネスデイにリグレッションテストツールのPROVE for PHPを紹介させて頂きました。その講演の資料です。Keynoteで話しながら説明するように作っていたので、PDFで見ても大丈夫なように少し改変しています。 http://blog.ohgaki.net/media/users/yohgaki/PHPCON2010PR…
OSX 10.6でPHPソースのbuildconfが実行できない
Mac OSX 10.6のPHPはPHP5.3なのでPHP5.2をビルドしてインストールしたい、と思っている方も多いと思います。Macportsが入っていれば、 sudo port install php52 php52-web のような感じでPHP5.2をインストールできます。Portsじゃなくてソースから、そしてPECLなど他のモジュールもロードするので…
Git+SSH+マルチユーザ
本格的にSubversionからGitへの移行を行った際に作ったGit+SSHサーバの手順をWikiに書きました。この手順を実行すると SSHの公開鍵を持っているユーザにのみリポジトリへのアクセスを許可 複数あるリポジトリへのアクセス許可を個別に設定 グループを設定して「読み込み」「書き込み」の権限を管理 ができるようになります。 詳しくはWikiのgit …
PHPが文字エンコーディング攻撃に強い理由 – HTMLエスケープ
PHPが文字エンコーディング攻撃に比較的強い理由は入出力の文字エンコーディングのバリデーション(サニタイズ)が行えるだけではありません。PHPが提供するHTMLエスケープ関数が文字エンコーディング攻撃に対して強い事も理由の一つです。 PerlでHTMLエスケープと言えば、<,>,&,",'をエンティティ変換するコードが一番に見つかります。…
#PHP でもutf8_decodeは使ってはならない
Twitterで書いた方が良いようなエントリですが、たまには良いでしょう。 #perl - utf8::decode()ではなくEncode::decode_utf8()を使うべき理由 という記事がありました。PHPにも似た関数、utf8_decodeがあります。PHPでも使ってはなりません。日本人というよりマルチバイト圏で使っている人はほとんどいないはずで…
何故かあたり前にならない文字エンコーディングバリデーション
私が4年前(2005年)に「Webアプリセキュリティ対策入門」を執筆していた時には、既に壊れた文字エンコーディングなどの不正な文字エンコーディングを利用したJavaScriptインジェクションやSQLインジェクション攻撃は比較的広く知られていました。この問題は当時のスラッシュドットジャパンでも取り上げられていました。/.で取り上げられたので、そこら中のWeb…