#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 звучит полезно.