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

screenshot