anton_reut
@anton_reut
Начинающий веб-разработчик

Насколько повысит безопасность сайта принцип хранить картинки на другом сервере?

Много читаю про то что при загрузке картинок пользователями часто можно подхватить вредоносный скрипт (шелл, бэкдор и пр.), но если я буду хранить все картинки на совершенно другом сервере с другим доменом и вообще на разных аккаунтах хостинга - насколько это поможет защитить программную часть самого "движка"?
Ну и еще вопросец по теме - почему на многих сайтах запрещено загружать гифки хотя встроить кусок php-кода можно и в джипег?
  • Вопрос задан
  • 199 просмотров
Пригласить эксперта
Ответы на вопрос 3
Adamos
@Adamos
Картинки могут использовать три вида уязвимостей:
1. В настройках вашего сервера. Если у вас можно загрузить картинку и обратиться к ней, и она останется неизменной и может оказаться не картинкой, а скриптом, который выполнится на сервере. Искореняется проверкой MIME и отдачей статики без обработки.
2. В библиотеках пользователя (старые версии libpng, например). В дикой природе практически не встречается, но если угодно, можно перекодировать файлы, используя ImageMagick.
3. И вот тут всплывает третий вариант: атака самого IM всякими форматами, в которых поддерживаются внешние ссылки. Искореняется ограничением того, что вообще можно загрузить и обработать, PNG и JPG, и последующей обработкой их IM.
На практике получаем, что проверка MIME и перекодирование IM решает все ваши проблемы. Заодно и еще одну - вам не навалят файлы такого размера, что внезапно кончится место на хостинге.
А вынос на другой сервер - вообще ни о чем. Только лаги увеличивать. Так делают для очень высоконагруженных проектов... но там и таких вопросов не задают ;)
Ответ написан
@Kerm
spoiler
Это тот случай где читать надо меньше
Ответ написан
SagePtr
@SagePtr
Еда - это святое
Много читаю про то что при загрузке картинок пользователями часто можно подхватить вредоносный скрипт (шелл, бэкдор и пр.)

Если при сохранении файла полагаться на то имя, что юзер передал - то да, будет огромная дыра. А если имя в скрипте как-нибудь безопасно генерировать, то никакой дыры не будет, сервер не будет исполнять эти файлы PHP-интерпретатором. К примеру, в качестве имени - хэш от содержимого файла (заодно поможет бороться с дублями), в качестве расширения - либо jpeg, либо gif, либо png, исходя из первых нескольки байтов файла (если не попадает ни под один из указанных форматов - то отказ)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы