[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Закрыть дыру при загрузке картинок
mikhailk
Есть вот такой простенький скрипт на сервере, который предназначен для загрузки изображений по адресу, передаваемому пользователем. Должны грузиться исключительно изображения в формате jpg размером не более 100к.

<?php
$link = $_GET['imgLink'];
$fileName = $_GET['imgName'] . ".jpg";
$path = "../images/" . $fileName;
file_put_contents($path, file_get_contents($link));
?>


С клиента, соответственно, передаются имя картинки и ссылка на нее на стороннем сайте. Картинка сохраняется в каталоге images, который открыт для доступа снаружи, чтобы можно было картинку получить по прямой ссылке.

Подозреваю, что это дыра в безопасности сайта. Можно ли как-нибудь по-простому закрыть эту дыру?

olimpset
Во-первых вы не указали в коде ограничитель размера файла в if, и только потом когда файл загружен не над использовать file_put_contents, а универсальную функцию move_uploaded_file().
Guest
Возможно, Вы не совсем поняли, но файл грузится не формой и в массив $_FILES не попадает.

Опять же, если бы я хотел получить советы в духе RTFM, то наверное, я не стал бы постить в форум "Для начинающих". Можете дать какие-то ссылки на конкретные решения, которые можно использовать, не тратя дополнительное время на изучение PHP? Это для меня разовая задача.
olimpset
Возможно вы правы, но во всяком случае надо поставить ограничитель размера файла, и как мне известно то надо менять в настройках файла php.ini на сервере функцией ini_set().
mikhailk
Я уверен, что есть очень простое решение.

Для случая с загрузкой картинок с формы применяют ресайз полученного файла как картинки. Но у меня загруженного файла как такового нет, а создавать дополнительно промежуточный файл для анализа... Возможно, имеет смысл проверить как-то уже записанный в images файл и, если он не удовлетворяет критериям, прибить?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.