コネクト株式会社 技術情報コンテンツ | ||
[[セキュリティ指針]] OSコマンドインジェクション対策説明OSコマンドインジェクションとは、特殊記号の使用により意図しないコマンドを埋め込まれることによって発生する問題を指す。 OSコマンドインジェクションは、PHP上でOSのコマンドを使用しない限りは、発生しない問題だが、実際に発生してしまうとPHPのユーザ(多くはWebサーバの権限)上でできる操作をすべて行えてしまうので非常に危険である。 被害例たとえば、Post後、設定したディレクトリを圧縮する次のような処理があったとする。 $dirname = $_POST['dirname']; system("tar zcvf $dirname"); この場合に、外部からの入力変数 $_POST['dirname']が"hoge || rm -rf /"などとなっていた場合、UNIX上ではPHPの動作権限で、すべてのファイルが消されてしまう。 対策以下の文字列を削除もしくは含まれていた場合はエラーとする。
コーディング手法
注意点escapeshellcmd関数という、これらをエスケープする関数が準備されているがこれらは完全ではない、自分でサニタイジングを行う必要がある。 |