У меня есть приложение PHP, которое принимает введенный пользователем $ imageurl и выполняет следующие действия:
exec('convert "'.$url.'" -thumbnail 80x500 "images/out.jpg"');
Теперь, очевидно, я должен принять некоторые меры предосторожности, чтобы пользователи не могли выполнять произвольный код. Например, если пользователь устанавливает $url
на ";rm -rf *;"
, то это не годится.
Итак, для начала я должен отфильтровать "
, чтобы независимо от того, что они вводят, они не могли выйти из своего ввода, являющегося параметром convert
. Но я должен также отфильтровать ;
? Я видел URL-адреса с точками с запятой в них ... и хотя точка с запятой действительно представляет опасность, отфильтровывание "
все равно защитит меня, верно? Но может ли URL иметь "
в них? И есть ли другие персонажи, за которыми я должен следить?
Возможно, вместо того, чтобы отфильтровать символы, я должен попытаться избежать их. Так я должен пытаться избежать каждого символа, интерпретируемого специально оболочкой? Или просто экранируйте "
, поскольку все остальное вроде "предварительно экранированного", учитывая, что оно внутри двойных кавычек?
Извините за мое бессмысленное замешательство, я новичок в этом и хочу быть в безопасности!
Спасибо
Мало