Есть ли безопасный способ кэшировать и изменять размер удаленных изображений с помощью PHP?

#php #image #security

#php #изображение #Безопасность

Вопрос:

Я работаю над программой чтения RSS с использованием SimplePie.

Я хочу подключать RSS-каналы и отображать статьи с миниатюрами. Я использую вложения RSS и позже проанализирую RSS <items> для <img>.

Есть ли безопасный способ загрузить эти удаленные изображения на мой сервер, чтобы я мог кэшировать их и изменять их размер?

У меня есть несколько идей о том, как это можно сделать, например, с помощью cURL, но меня интересует безопасность. Я знаю, что могу ограничить по расширению файла, и я, вероятно, мог бы посмотреть на тип MIME, но я просто хочу знать, возможно ли это вообще / безопасно. Если да, то какие шаги следует предпринять, чтобы убедиться в отсутствии уязвимостей.

Комментарии:

1. О каких конкретных проблемах безопасности вы беспокоитесь?

2. Возможно, XSS или просто выполнение любого кода из вредоносного RSS-канала, который заставляет мое приложение думать, что его скрипты являются изображениями. Я знаю, что SimplePie довольно хорошо избегает XSS, но простая загрузка произвольного удаленного файла в общедоступное место на моем сервере сопряжена с риском для безопасности.

Ответ №1:

Изменяйте размер изображений с помощью gd или imagemagick

или вы можете сделать это таким образом, ознакомьтесь со следующей ссылкой

Комментарии:

1. 1: внесение изменений в cotnent с помощью такого инструмента должно удалить любой вредоносный контент — просто не храните необработанное изображение в корневом каталоге вашего документа.

2. Хорошо, значит, нет никакого риска при открытии удаленного файла с помощью GD или imagemagick, если я не сохраняю оригинал? Кроме того, я посмотрю на эту ссылку. Меня не так волнует собственно написание этого, как безопасность, поскольку я хорошо разбираюсь в безопасности, но я не эксперт.

Ответ №2:

Возможные проблемы с безопасностью:

  • Выполнение удаленного скрипта. Каким-то образом вы загружаете php-скрипт вместо изображения, и сервер выполняет его при последующем вызове этого изображения.

Решение: на любом веб-сервере вы можете настроить каталог загрузки таким образом, чтобы там не мог выполняться скрипт. И не забудьте добавить соответствующие дополнения к изображениям (лучше выбирать из списка, не доверяйте mime-типам).

  • XSS на клиенте, читающем RSS. Вы загружаете изображение. Но, похоже, это javascript.

Решение: убедитесь, что вы вставили ссылку на это изображение в <img src"..."> тег. Скрипт не будет выполняться из тега img. Более того, изменение размера изображения с помощью GD или Imagic, несомненно, испортит любой js внутри, если он там был.

Комментарии:

1. Спасибо за информацию, но я думаю, что со второй частью я разобрался. Кроме того, можно выполнить скрипт из атрибута src изображения, поэтому я не уверен, что это само по себе на 100% безопасно ( ссылка ). Конечно, совет по использованию GD или imagemagick звучит полезно.