openは使わずsysopenを使うように
近年Webアプリケーションの脆弱性狙った事件が頻発していることもあって、セキュリティチェックなんていうのがあったりするのですが、「Perlではopenは特別な理由がない限りは使わずsysopenを使うこと」となっていたりします。
多分元ネタとしてIPAのセキュアプログラミング講座を使っていてsysopenの話が出てきたのでしょうが、ダイレクトOSコマンドインジェクションの脆弱性対策というのであれば、openでファイルを開く時は3つの引数を指定する方法*1にすることというようにして欲しいところ。
社内向けにこの手のガイドを作成するメンバーの一人になったので3引数方式のopenを薦めたいと思っているのですが、Googleで調べてみるとopenの3引数よりもsysopenの方がたくさんヒットしてしまうのでちょっと書いてみました。
せっかくの機会なので、Perlに関してはXSS対策と称してテンプレートエンジン(Template-ToolKitやHTML::Template)やSQLインジェクション対策としてClass::DBIやバインドメカニズムを広めたい所です。あとどさくさに紛れてuse strictやuse warningsも。