The truth of register_globals -the best feature of (old) PHP-, and together in the future Accepted #yapcasiaA
Tweet
Abstract
かつて
Q.「セキュアなWebアプリケーションを作るにはどうすればいいか」
A.「まず PHP を避ける」
とまで言わしめた 古い PHP が活躍していた時代、その中心的機能である register_globals を知っていますか。この機能を on にしたが最後、リクエストパラメータは問答無用でグローバル変数に展開されてしまうという、お手軽且つ凶悪な機能でした。変数汚染攻撃の温床ともなり、「PHP is 脆弱性」とまで言われるようになった所以です。
最新の PHP ではこの機能は無くなりましたが、この機能の強烈さに侵された古き良きアプリケーションは、2015年になっても、未だに PHP 5.4 以上(※)にアップデートできないという呪いにかけられています。
※ register_globals
は PHP 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 | -pc.html
Talk Duration | Lightning Talk |