ユーザーが入力した $imageurl を受け取り、次のことを行う PHP アプリがあります。
exec('convert "'.$url.'" -thumbnail 80x500 "images/out.jpg"');
明らかに、ユーザーが任意のコードを実行するのを防ぐために、これに関していくつかの予防策を講じる必要があります。たとえば、ユーザーが に設定$url
した場合、";rm -rf *;"
まったくダメです。
"
したがって、まず、何を入力しても、入力が へのパラメーターであることから逃れることができないように、フィルターで除外する必要がありますconvert
。;
しかし、私も同様に除外する必要がありますか? セミコロンが含まれる URL を見たことがあります...ここではセミコロンが本当に危険ですが、フィルタで除外し"
ても安全ですよね? しかし、URLに含めること"
はできますか? 他に注目すべきキャラクターはいますか?
文字を除外する代わりに、文字をエスケープする必要があるかもしれません。では、シェルによって特別に解釈されたすべての文字をエスケープしようとする必要がありますか? "
または、二重引用符で囲まれているため、他のすべてが一種の「事前エスケープ」されているため、単にエスケープしますか?
とりとめのない混乱で申し訳ありません。私はこれが初めてで、安全を確保したいのです!
ありがとう、
マラ