PHPのescapeshellcmdの危険性 - 徳丸浩の日記(情報元のブックマーク数)
PHPのescapeshellcmdのエスケープ仕様がちょっとまずくて、脆弱性を生みそうなので、escapeshellargを使いましょう!って話。
PHPのescapeshellcmdはパラメータをクォートしないので呼び出し側でクォートする必要がありますが、escapeshellcmdの仕様がまずいために、呼び出し側でクォートしても突破できることが分かりました。
http://www.tokumaru.org/d/20110101.htmlp01
escapeshellargは、エスケープだけでなくシングルクォートでクォートもしてくれます(引用符で囲むことをクォートするといいます)。エスケープ方法も、シングルクォートで囲む場合のエスケープ方法に従っているので、割合安心して利用できます*1。一方、escapeshellcmdは、エスケープのみでクォートしないので、呼び出し側でクォートする必要があります。
http://www.tokumaru.org/d/20110101.htmlp01