ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

PHPは本当に危険なのか?

http://enterprisezine.jp/article/detail/311
とか、IPAの「例えば、PHPを避ける」(IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第1章 総論:より良いWebアプリケーション設計のヒント)とかみるとPHP自身の問題と、PHPで作成されたWebアプリの問題をごっちゃにしている気がしている。
PHPという言語自体に問題があるのは確かだし、PHP4を未だ使い続けているというのも問題だけども、だからといってこういった記事を見て、明日から「PHPは危険だから、Webアプリの開発にJava/.NETにしよう」といっても正しいプログラムの書き方を知らないことには、Webアプリの脆弱性はなくならないだろう。
PHPの問題は、以下の点の様な気がする。

  • PHPに下位互換性が無い。全くバージョンが違うと全く別の言語といってもいいくらい仕様が異なる。
  • PHP本体と拡張機能がごっちゃになっているため、便利な機能が多い反面、落とし穴&バグが多い。
  • 一見するとセキュリティ対策のようななんちゃってセキュリティ対策が多い。
  • デフォルトで便利機能が有効になっている=セキュリティ上問題がある。
  • PHPは簡単に覚えられるので初心者向きという幻想がある。(プログラムに詳しい人にとって学習の敷居は低いけれど、気をつけなくてはならないことが多いからかえって大変だと思う。)

PHP自身が抱えている問題は他の言語、フレームワークを使うことで減らすことができるのは確かだろう。
それと、初心者が作るWebアプリケーション自身が持つ脆弱性の多さと分離して考えないといけないんではないかと思う。PHPは初心者向きという誤った宣伝がなされているがために、初心者がきちんと危険性を理解せず脆弱性のあるWebアプリを大量に作りこんでしまっているのが現状ではないか?
今後新たにPHPのような「初心者向き」と呼ばれる言語ができたとして、そちらに移ったとしても同じことがおこるんじゃないかなぁと思う。
もっとも、新しい「初心者向き言語」が何も考えずに、安全なアプリケーションが作れるのであればそういうことは起こらないかもしれないけど・・・