Talk Information

The truth of register_globals -the best feature of (old) PHP-, and together in the future Accepted #yapcasiaA

このエントリーをはてなブックマークに追加

Abstract

かつて

Q.「セキュアなWebアプリケーションを作るにはどうすればいいか」
A.「まず PHP を避ける」

とまで言わしめた 古い PHP が活躍していた時代、その中心的機能である register_globals を知っていますか。この機能を on にしたが最後、リクエストパラメータは問答無用でグローバル変数に展開されてしまうという、お手軽且つ凶悪な機能でした。変数汚染攻撃の温床ともなり、「PHP is 脆弱性」とまで言われるようになった所以です。

最新の PHP ではこの機能は無くなりましたが、この機能の強烈さに侵された古き良きアプリケーションは、2015年になっても、未だに PHP 5.4 以上(※)にアップデートできないという呪いにかけられています。

register_globalsPHP 5.4 で削除されました

そんな人達はみんな同じ願いを口にします。

Q. 「どうにかして PHP 5.4 にあげたいんだよ。`register_globals` を再現する方法はないか?」
A1. 「for 文で `$_GET` とか `$_POST` を走査して一個ずつグローバル変数にマッピングすればいいよ」
A2. 「extract() 関数で一発だよ」

こう答える人達は register_globals のことを何もわかっていません。そんな甘い世界ではないんですよ register_globals は!!


本トークでは、もはや誰も使うことの無くなった register_globals について振り替えりつつ、主に下記について発表します。

  • ドキュメントにも載っていない機能
  • PHP 5.4 以上、だけじゃない。 PHP 7 や HHVM でも正しく register_globals を再現するライブラリ

参考資料:

Talk Details

Venue トラックA 国際会議場
Starts On 2015-08-21 17:25:00
Talk Duration Lightning Talk

Slide