Я подозреваю, что ваш друг имеет в виду не просто отображение изображений, а, в частности, предоставление пользовательских изображений.Существует ряд проблем безопасности при обслуживании предоставленного пользователем контента.В случае изображений существует несколько способов использовать загрузку изображений, чтобы заставить веб-сервер выполнять код.Вот некоторые из наиболее известных:
- Файл "GIFAR".По сути, это GIF-файл и JAR-файл, объединенный.Поскольку информация индекса для GIF находится в начале, а информация для файла JAR - в конце, два типа файлов можно объединить, и в результате получится как действительный GIF, так и действительный JAR.
- Несколько файловрасширения.Веб-серверы поддерживают несколько расширений файлов, чтобы обеспечить такие вещи, как интернационализация.Например, файл с именем page.html.fr может отображаться на версию страницы на французском языке.Файл с расширением image.php.jpg или даже image.php.123 может быть выполнен в виде скрипта PHP, в зависимости от конфигурации сервера.
- Переполнение буфера.Форматы файлов изображений обычно содержат заголовок в начале, который описывает размер и формат файла.Недооценка размера может позволить злоумышленникам создать атаку переполнения буфера.
Все эти примеры приводят к возможности выполнения кода в качестве веб-сервера.Хотя функциональность сайта требует возможности загружать файлы, хранение их в каталогах, которые не доступны напрямую по URL, затрудняет их использование.Точно так же использование сценария для их обслуживания, а не обработчиков MIME веб-сервера гарантирует, что изображения обрабатываются как поток данных, а не как потенциально исполняемый файл.пользователей, характер собранных данных о них и тривиальность веб-сайта.По крайней мере, злоумышленник хотел бы получить пароли пользователей из-за тенденции их синхронизации.Пользователь на вашем сайте, чей пароль ABC123, вероятно, будет использовать этот же пароль для электронной почты, социальных сайтов и возможных банковских и финансовых сайтов.Помимо паролей, если данные, которые вы собираете о своих пользователях, могут быть идентифицированы лично или имеют другую рыночную стоимость, или если у вас просто большое количество пользователей, то вы должны предположить, что сайт будет целью.Это означает, что вы должны быть более внимательны при обслуживании предоставленных пользователем файлов изображений, правильно их проверять или и того, и другого.
У меня нет точного ответа на вопрос, поможет ли использование imagemagick решить проблемы безопасности.По крайней мере, обязательно используйте текущую версию, потому что быстрый поиск обнаружил ряд известных уязвимостей.Помните, что файлы, о которых вам нужно беспокоиться, могут взорвать imagemagick, даже если они не используют одну из известных уязвимостей, поэтому убедитесь в том, что ДЕЙСТВИТЕЛЬНО хорошо перехватывает ошибки.