2013-10-04 3 views
0

У меня есть php-скрипт, который загружает изображения в каталог на сервере. Но я видел некоторые комментарии, в которых упоминалось, что изображения не должны загружаться в корневой каталог для обеспечения безопасности. Я не уверен в уязвимостях безопасности, которые могут возникнуть, если я загружу в каталог, который я сейчас загружаю. Вот путь, по которому будут сохраняться изображения. HTDOCS/изображения/filenames.jpg. A screenshot of my directory is shown so that it would be clearБезопасность загрузки изображений

Просьба сообщить мне, где хранить изображения в надежном образе.

+0

Если вы установили chmod из папки на 644 и переименовали изображение, например, с отметкой времени, вы должны быть в порядке – JTC

+0

, это позволит пользователям загружать файлы в этот каталог, если chmod установлен в 644, потому что здесь http: // www. draac.com/chmodchart.html слово сможет читать только. И могут ли быть дубликаты временных меток, когда одновременно загружаются несколько пользователей. – codeGEN

+0

Добавлена ​​безопасность, основанная на предположении, что кто-то может загрузить файл php или другой исполняемый файл. Наличие загружаемого каталога вне webroot выдает эти файлы или достигает их. Вы можете chmod каталог до 755 во время загрузки и вернуться к 644 после. – Daniel

ответ

1

Было много тем, посвященных безопасности загрузки изображений, но, во-первых, это разрешение каталога 644. Затем вам нужно позаботиться о названии, как указано в комментариях, метка времени - это довольно хороший способ, однако она должна сочетаться с некоторыми случайно генерируемыми значениями (или использовать временную метку, включая миллисекунды), однако, если вам нужно предоставить изображения значащее имя, вы должны дезинфицировать имя, предоставленное пользователем, отфильтровать нулевые байты, обход каталога и другие опасные символы (я бы выделил белый список и ограничил длину имени изображения или произвольно сгенерировал строку).

Вместо того, чтобы помещать изображение за пределы веб-корня, я предпочитаю использовать .htaccess с опцией php_flag engine off в нем, чтобы отключить любое выполнение php в каталоге. Кроме того, размещение изображений вне корневого веб-узла делает их недоступными, поэтому вы не сможете использовать их в теге <img>, если только вы не используете PHP-скрипт для обслуживания изображения (это довольно безопасный метод, если он выполняется правильно).

Наконец, вы хотите проверить, загружено ли действительное изображение, обычно используется библиотека GD, в частности, getimagesize, которая вернет размер изображения только в том случае, если загружено допустимое изображение.

Также проверьте это topic на безопасность загрузки изображений.

+0

На данный момент все мои изображения находятся в веб-корне, например /htdocs/images/filename.png. Я использовал файл .htaccess со следующими командами AddHandler CGI-сценарий .php .pl .py .jsp .asp .htm .shtml .sh .cgi Опции -ExecCGI будет этого достаточно и также я повторно -размер изображений с использованием GD lib и удаление исходного изображения пользователей. – codeGEN

Смежные вопросы