カテゴリー: Computer

  • PHPのStrict Sessionパッチ

    のんびりしていた訳ではありませんが、PHP 5.4.1のブランチが作られたので慌ててStrict Sessionパッチを改訂しました。

    master
    https://gist.github.com/1379668

    5.4
    https://gist.github.com/2224196

    5.3
    https://gist.github.com/2224360

    以前、Gistに入れていたパッチとの違いは、

    • PSモジュール(セッションセーブハンドラ)のAPIを変更しないように修正
      (これにより使っているハンドラが対策済みかどうかは見て分かるようには出来なくなりました。その代りにmemcacheなどのサードパーティのセーブハンドラのコンパイル済みバイナリとの互換性を維持しています。)
    • セッションIDのコリージョン(衝突)を検出
      (三回リトライしてもコリージョンする場合はエラー。通常、三回もコリージョンすることはまずあり得ません。)

    となります。

    PSモジュールを書く方(ユーザセーブハンドラ含む)はセッションをOPENする場合にセッションIDが初期化済みか、チェックする必要があります。

    と、ここまで書いてパッチに多少問題がある事に気が付きました。自動生成する場合はコリージョンを検出していますが、session_regenerate_id()で生成する場合はコリージョンをチェックしていません。session_regenerate_id()を呼んだ時もチェックしないと片手落ちなので近いうちに修正します。

    パッチを書いていてsession_write_close()してsession_start()をした場合、おかしくなることに気が付きました。困っている人が居るか、バグDBを検索するとやはり数人からバグレポートされていました。この件は別途に対応する事にします。

    パッチを使ってみてくださる方、大募集です。ZTS、Non-ZTSの両方でUNITテストは実行していますが、Webサーバでテストしていません。動いたら、Twiterなどで良いので教えてください。よろしくお願いします。

     

    このパッチについては、こちらをご覧ください。これは私が書いているのでおかしな英語があった場合、教えて頂けると助かります。

    https://wiki.php.net/rfc/strict_sessions

  • 「PHP徹底構築」を頂きました

    廣川類さんが執筆された「PHP徹底構築」を頂きました。3/29日発売らしくアマゾンでも予約受付中の出来たてホヤホヤの本です。書籍イメージも無かったので自分の携帯で撮った写真を載せておきます。

    最新版のPHP 5.4にも対応しています。先程届いたばかりなので読むのはこれからですが、内容を簡単に紹介します。

    (さらに…)

  • OSC愛媛2012の資料 – PHP5.4とはどんなPHPなのか?

    OSC愛媛2012の「PHP5.4とはどんなPHPなのか?」の資料を公開します。ポイントは以下の通り。

    • PHP 5.4は基本的にはベターPHP5.3
    • 互換性問題もあるが、一般に致命的な問題はない
    • 全般にPHP5.4は速い
    • 移行を考えている方は早い方が良い(使える期間が長くなる)
    • ディストリビューションのPHPを使う、という選択もある(RHEL6 PHP5.3, Ubuntu LTS PHP5.4?)

    プラットフォームの選択には様々な事情がありますが、Traitsはコードを効率良く再利用するには便利な機能です。さっと移行してしまうのも良いでしょう。

    ところで、Traitsの例としてアクセサの実装例を紹介しています。

    https://gist.github.com/1379592

    しかし、次のPHPではC#風のアクセサ文法がサポートされる可能性があります。

    https://wiki.php.net/rfc/propertygetsetsyntax

    こちらの方が色々便利です。利用する場合は、このような文法が実装される可能性があることを理解した上で使うと良いと思います。

  • PHP Git Repository

    PHPのソースコードのリポジトリがSubversionからGitに移行しました。

    https://wiki.php.net/vcs/gitfaq

    個人的には、これで色々楽になります。

  • 第二回 岡山PHP勉強会のスライド

    第二回 岡山PHP勉強会のスライドです。

    遅くなりました。多少追記したい部分があったのですが、取り敢えず公開します。

  • PHP: comma vs. dot #2

    少し前にPHPのechoはカンマとドット、どちらの方が速い?というエントリを書きました。

    http://blog.ohgaki.net/echo-comma-vs-dot

    この時は長めの細切れな文字列を連結しています。カンマの方が2割ほど速い結果でした。古いPHPでは短く単純な文字列の場合もで速かった、と記憶していました。手元のPHP5.3の性能が気になったのでabで簡単に試してみました。

    (さらに…)

  • Git Hubの脆弱性とMass Asssignment

    Git HubがMass Assignment脆弱性に脆弱で他のレポジトリが見れる状態だったらしい。問題は既に修正されています。

    この脆弱性はRailsに限った事ではないし、古くからPHPを使っているユーザにとってはある意味懐かしい脆弱性でもあると思ったのでエントリを書いてみました。

    (さらに…)

  • PHP 5.4 リリース!!

    PHP 5.4がリリースされました。

    詳細はソースに添付されているUPGRADINGNEWS、マニュアルのマイグレーションガイドから参照できます。

    (さらに…)

  • echo:comma vs dot

    昨日、echo ‘abc’,’xyz’  (カンマ) と echo ‘abc’.’xyz’ (ドット) とどちらが速い?と言う話になったので簡単な実験をしてみました。

    PHPのソースコードを見るとどちらも有利な点と不利な点があります。随分前に試した時も一般にカンマの方が速いと思える結果でしたがPHP5.3ではどうなのか試してみました。 (さらに…)

  • Apple KeyboardをLinuxとWindowsで使用する 

    Linux PC用にJIS配列Apple KeyboardのUSB版(フルサイズのApple Keyboard)を購入しました。

    MacBookと同じ配列のワイヤレス版の場合、長時間の入力には向かない、とAppleサイトの製品レビューにはあったのでUSB版を購入しました。バッテリーも気にしなくて良いのはメリットです。

    (さらに…)

  • 第2回岡山PHP勉強会 2/21(火)

    第2回岡山PHP勉強会の参加募集が始まりました。

    http://atnd.org/events/24637

    前回はすぐ満席になったのでお早めに。

  • PHP 5.4でのAccessorとPHP 5.5以降で検討されているAccessor

    二回目のPHP 5.4 Advent Calender用のエントリです。

    今回はPHP 5.4より後のPHP(5.5かな?)で利用可能になると思われるAccessorの仕様について紹介します。まずはAccessorのおさらいから。

    追記:この機能は投票で棄却されてしまいました。賛否両論が拮抗していたのですが、実装されなくて残念です。

    (さらに…)

  • PROVE for PHP Version 1.1.0

    PROVE for PHP Version 1.1.0を公開しました。特に重要な変更はログデータ構造の変更と各種オーバーライド機能の調整です。

    今までext3/ext4ファイルシステムの場合、ディスク容量を使い切る前にパフォーマンスが低下してしまい大きなデータを保存できませんでした。データ構造を見直す事により大きなデータでも安定して動作するようになっています。

    (さらに…)

  • 第一回 岡山PHP勉強会のスライド

    昨日は第一回の岡山PHP勉強会お疲れ様でした。参加枠を何度か拡大しても60名の満席でした。初回ということでプログラマ目線からのセキュリティ対策の基本を解説させていただきました。セキュリティってわかりづらい、何をすれば良いのかわからない、という声はよく耳にします。短い時間でしたが考え方の基本は概ね説明できたと思います。

    重要なことは口頭で説明したので資料だけみてもよくわからないとは思いますが、勉強会の資料を公開します。なにかございましたらツイッターなどで問い合わせて下さい。ツイッターには岡山PHP勉強会のハッシュタグ (#okaphp) を付けると他の方にも分かりやすいと思います。

    次回の岡山PHP勉強会は2月だそうです。

    追記:Integrityの訳はネットを検索してきた訳語の「統合性」を使っていましたが、違和感があったので調べてみました。JISでは「完全性」と訳されているので正しい用語に修正しておきました。

  • PHPのセッションアダプション脆弱性克服への道のり

    PHP Advent Calender用のエントリです。

    PHPのセッション管理は非常に簡単です。セッションをsession_start()で開始して$_SESSION配列を使うだけです。便利で簡単なセッションモジュールですがセッションアダプションに脆弱であるため、一般に言われてる「ログインする時にはsession_regenerate_id()を呼ぶ」コーディングではセッションアダプションに脆弱になってしまいます。

    まずは危険性と対策を紹介します。 (さらに…)