unoh.github.com

PHPで不要とされた機能についての考察

Thu Feb 22 18:00:00 -0800 2007

Keitaです。 Hideさんが、ぼくをキャバクラに連れて行ってくれません。

さて、PHPの次期バージョンPHP6では、いくつか廃止されるPHPの機能があります。

UnicodeサポートがはいるPHP6を使うかどうかともかく、その機能のいくつかをみて、あーそうするとPHP4とか5でつかうのもアレなんじゃない?っていうのが今回の目的です。 ずいぶん前から言われてることなので、(リンク先の記事も2005年だし)知ってる人はしってると思いますがとりあえず。

magic_* 系統の廃止

一番わかりやすいところでいうと、「magic_quotes_gpc」が設定でOnの場合には、外部から送られてくるGET, POST, COOKLEの値に対して「'(シングルクオート)、" (ダブルクオート)、\(バックスラッシュ) 、NULLに、エスケープ文字列「'」を追加します。 一見セキュリティ上好ましい設定に見えますが、仮に、いわゆる、SQLインジェクション対策をしてない場合に、入力された時とDBから取り出したときに違う値を取り扱う羽目になります。

Input: data="abc'bb";

echo htmlspecialchars($_POST['data'], ENT_QUOTES); setDB($_POST['data']); //DBに格納する echo htmlspecialchars(getDB(), ENT_QUOTES);

output abc\'bb abc'bb

というわけで、相当な理由がなければ、使うことはないと思うんですが、でもたまに、ちらほらと聞こえてくる機能なので(そんなシステムが稼動していることが)いろいろと心配です。

register_globals

これは全会一致で、なくていいと思うので特にいうことはありません。さようなら!

safe_mode

この機能、PHPでたまにある、strip_tagsとかと一緒の「便利だけど信用しちゃいけない機能」の一つみたいです。 ただ、この名前が、どうもいけてないけど、これのせいで、PHP自体にセキュリティの問題が・・ということになってるケースが多かったので削除されたようです。

ちょっと調べてみると、yohgaki's blogというところに、なんとなくそれっぽい話が書いてありました。ぼくも、名前変えて継続すればいいのにと思いました。個人ではつかってないので、積極的には思いませんでしたけど。

<%の廃止

使ってるのみたことないのですが、なくていいと思います。というか、これどういう経緯でできたのかがいまいち想像できないんです。ASPから簡単にPHPに簡単に移植できるよ!とかいいたかったのでしょうか。・・・・とおもって簡単にしらべたら、もしかするとエディタで簡単に設定するためだったのかもしれません。もちろんそれだけじゃないでしょうけど

もし、使っている所があって見直しのきっかけになれば幸いです。