Как проверить изображение на корректность и отсутствие вредоносного кода?
Думаю, большинство пользователей vk.com вставляли в сообщения ссылки на изображения. А контакт, в свою очередь, дабы не утруждать пользователей переходами по ссылкам, сам качает картинку и вставляет в сообщение уже само изображение, а не url.
Вопрос: как уберечься от левых картинок? Вот так сделает сайт запрос по адресу, а ему в ответ DROP TABLE. Как уберечься от подобного?
Задача стоит в следующем: если пользователь ввёл в поле ссылку, стукнуться по ней и проверить, что там Если картинка, вывести ему в его тексте вместо ссылки миниатюру этой картинки (со стороннего сайта), при клике на которую он уже перейдёт к той, что он ввёл. Если по ссылке текст - тут уже другая обработка...
Как сделать это всё максимально безопасно?
Для правильного вопроса надо знать половину ответа
Чтбы понять, что там, всё равно придётся сначала скачать файл. А дальше можно его как угодно анализировать, например через finfo в php. Можно сначала получить заголовок через запрос HEAD, убедиться, что файл существует и определить его объём.
И уж конечно никакие полученные от клиента данные не должны писаться в базу без контроля. Как минимум mysqli::bind.
Быть может попробовать получить размеры картинки? Ведь скрипт вряд ли их отправит Вам.
К примеру, Если размеры, Высота = 0 и Ширина 0, то не качаем. Если больше нуля, Высота 30 и ширина 30 продолжаем.
@artem_gurnovich что бы гарантированно проверить URL на факт того, что это картинку нужно в любом случае скачать его. А все это "Высота 30 и ширина 30 продолжаем" баловство. В http header я могу вам заслать что угодно (в том числе, что это картинка, а отдать реально скрипт, и вуаля обзавестись php шелом).
@alekciy, Хотя да, не подумал на счёт http header, тут даже такая функция, вряд ли поможет.
function get_image_info($file_path="")
{
if($file_path!="")
{
$image_info = getimagesize($file_path);
return $image_info;
}
else
{
return false;
}
}
Скачать картинку, и сделать ее преобразование к формату нужному сайту. Преобразование делать инструментами которые позволяют полностью контролировать параметры выходного файла. Например imagemagick.