相対パス記法を悪用したディレクトリトラバーサル攻撃から保護するために,パス名チェックは欠かせない。しかし相対パス記法を仕様上認めるアプリケーションもある。パス名を正規化して,意図するディレクトリ/ファイルを指しているかどうかをチェックしよう。 リスト1のPerl で書かれたサンプルプログラムを見ていただきたい。ファイルを操作するアプリケーションによく見られるコーディング例である。このアプリケーションではデータファイルを「/var/data/」ディレクトリ下に配置し,そのディレクトリ下のファイルへのみアクセスすることを前提としている。1行目はこれをそのまま反映させたコーディングで,データディレクトリ「/var/data/」のパスに,参照しようとしているファイル名$fileを連結して,パス名$filepathを構築している。その後,2行目のsysopen文で$filepathにしたがいデータフ