PHP
PROVE for PHP 1.0.3を公開
私の会社で開発・販売しているPROVE for PHPを更新し、PDOオブジェクトに対応したPROVE for PHP 1.0.3の配布を開始しました。PDOオブジェクトに対応したので幅広いアプリケーションで利用できます。PROVEは非商用の個人利用の場合、無償で利用できます。問題などございましたらツイッターやメールなどでフィードバックを頂けると助かります。…
PHP 5.4から利用できるtraitの利用例
PHP5.4からtraitが利用できるようになる事をご存知の方も多いと思います。 traitはコードの水平再利用を可能にする仕様拡張です。Rubyのmixinのような機能と言えば分り易いかも知れません。 誰でもtraitを利用したくなるようなコードをinternals@php.netのMLで見かけたので紹介しよう、と思って書いたのですがコピペしたコードをしっ…
Bit module for PHP
誕生日のメッセージを送ってくださった皆様ありがとうございました! 今日は誕生日ということで多少は趣味のOSSに時間を割いてもバチは当たらないだろう、という事で簡単なPHPモジュールを書きました。PHP勉強会@東京に参加してPHPerバイナリアンの方の発表に触発された事がこのモジュールを書いた動機です。BitモジュールはバイナリアンPHPerの為のモジュールで…
RealIP Module for PHP
リバースプロキシの背後にあるPHP用に$_SERVER['REMOTE_ADDR']をX-Real-IPやX-Forwarded-Forヘッダに設定されたIPアドレスに書き換えるRealIPを書きました。 https://github.com/yohgaki/realip 少しGoogleで検索しても見つからなかったので作ったのですが、既にありそうな気がしま…
PHPセッションアダプションをスクリプト側で修正する方法
PHPのスクリプトを使ってアダプティブなPHPセッションをアダプティブにしない方法を紹介します。 このブログで紹介していたかどうか覚えていないですが、セッションアダプション対策としてsession_regenerate_id()が導入された時に議論・紹介されているので知っている方も多いと思います。(というより、PHPerの常識ですよね?) まずはセッションア…
PHP 5.4の文字エンコーディング設定
PHP 5.4 RC1が公開されています。PHP 5.4のリリースが近いです。PHP 5.3の--enable-zend-multibyeの問題でバグレポートをした関係でinternals MLでメールのやり取りをして分った事とその他をまとめておきます。主にSJISを使う場合の注意点です。間違い・勘違いもあるかも知れないので気が付いたらコメントを下さい。 P…
PHPのSession Adoption脆弱性
PHPのセッションモジュールはセッションアダプションに脆弱なのですが、開発者の理解が得られず何年間も放置されています。 セッションアダプション脆弱性: 未初期化のセッションIDを受け入れてセッションを確立する脆弱性。 PHPのセッションIDはデフォルトでドメイン指定無し、パスは/に設定されています。専用サイトならこれであまり困ることは無いのですが、複数のアプ…
PROVE for PHP Ver 1.0
まだまだ完成度を高める必要がありますが、PHPのリグレッションテストツールのPROVE for PHPのダウンロードを開始しました。 http://www.provephp.com/ PHPのテストスイートの設定を忘れていてPDOオブジェクトのサポートできてない事に直前に気がついたのでPDOには対応していません。これは出来るだけ早急に対応します。 Dokuw…
PROVE for PHP 0.4.0-dev リリース
PROVE for PHP 0.4.0をリリースしました。 IOをプラグイン化(将来PostgreSQLなどに対応) prove_seek_function_call()を追加 ハードリンクによるコピーに対応(高速化) prove_rename_function()の無効化(PHP 5.3のZend Engineの仕様変更により関数名変更はメモリエラーが発生…
もうバージョンアップで困らない – PROVE for PHP
昨年のPHPカンファレンスで紹介したPORVE for PHP 開発版の公開を始めました。PROVE for PHPはこんなテストが出来ます。 PHPをアップデートしてアプリに影響が無い事を検証する PHPアプリをアップデートしても以前と同じように動作する事を検証する 使い方もとても簡単です。 テストケースの作成はブラウザからアプリを利用するだけ ロードバラ…
phpのescapeshellcmdの余計なお世話を無くすパッチ
徳丸さんのブログでescapeshellcmdの余計なお世話の件が指摘されていたのでパッチを作りました。これmagic quoteと同じレベルの余計なお世話なのですが放置されています。個人的にはどのような関数にも全てバリデーション済みの文字列しか渡さないのでセキュリティ問題は発生しないのですが、UNIX系OSではペアとなる"と'はエスケープしない仕様に気が付…
php – 短縮URLを一行で展開する
perl - 短縮URLを一行で展開する という記事があったのでPHPでやるとどうかなと作ってみた。(と言うほどの物ではありませんけど)本当に一行にするには無理があったのでの実際には2行です。他に良い方法があるかな? $ php -r '$h=get_headers($argv[1], 1);echo $h["Location"];' http://j.mp…
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など他のモジュールもロードするので…
PHPが文字エンコーディング攻撃に強い理由 – HTMLエスケープ
PHPが文字エンコーディング攻撃に比較的強い理由は入出力の文字エンコーディングのバリデーション(サニタイズ)が行えるだけではありません。PHPが提供するHTMLエスケープ関数が文字エンコーディング攻撃に対して強い事も理由の一つです。 PerlでHTMLエスケープと言えば、<,>,&,",'をエンティティ変換するコードが一番に見つかります。…
gihyo.jpにPHP 5.3の紹介記事を書きました
「PHP 5.3の新機能と変更点」と題した記事を書きました。 http://gihyo.jp/dev/feature/01/php53 レイトスタティックバインディングは何に使うのか?と疑問に思っている方も多いようです。新しい機能がどう使えるのか解説するとともに、追加されたモジュールや関数、削除された機能、注意が必用な変更箇所などを紹介しています。 4回に分…