(Last Updated On: 2018年8月16日)OSコマンドのエスケープの続きです。OSコマンドインジェクションを防ぐための、OSコマンドのエスケープはSQLのエスケープに比べるとかなり難しいです。 難しくなる理由は多くの不定となる条件に依存する事にあります。 OSコマンドを実行するシェルはシステムによって異なる シェルはプログラミング言語+複雑なエスケープ仕様を持っている(コマンド以後はクオートなしでも文字リテラルのパラメーター+各種展開処理) WebアプリはCGIインターフェースで動作するため環境変数にインジェクションできる コマンドパラメーターの取り扱いはコマンド次第である 実行されるコマンドの実装により、間接インジェクションが可能になる SQLの場合、出力先のシステムは一定です。PostgreSQL用にエスケープした文字列をMySQLで実行したり、MySQL用にエスケープ
![OSコマンドのエスケープ – シェルの仕様とコマンドの実装](https://cdn-ak-scissors.b.st-hatena.com/image/square/9d2015857e00558eb990db2db4a4490aa83e71f0/height=288;version=1;width=512/https%3A%2F%2Fblog.ohgaki.net%2Fwp-content%2Fuploads%2F2013%2F11%2Fcropped-blog_header-2.jpg)