Как заставить безопасный файл загрузить сценарий в php?

Doxygen делает некоторый анализ потока управления и генерирует графики. Это не может быть тем, что Вы ищете, но я нашел их полезными для взгляда на.

9
задан Galen 29 November 2009 в 16:13
поделиться

2 ответа

  1. Никогда не используйте имена файлов, отправленные пользователем; придумывайте новые типа «случайное число» .jpeg. «Очистить» имена файлов сложнее, чем вы думаете, особенно если приложение должно работать на сервере Windows.

  2. Для изображений используйте функцию PHP getimagesize , чтобы определить тип файла изображения, вместо того, чтобы смотреть на крайне ненадежные представления имени файла и mimetype. Запретите загрузки, которые не анализируются как изображения.

  3. Для файлов, предназначенных для загрузки, используйте заголовок Content-Disposition: attachment , чтобы IE не отслеживал содержимое HTML и не отображал его в браузере.

  4. Для файлов, которые должны отображаться встроенными, вам придется обслуживать их с другого имени хоста на вашем основном сайте, в противном случае HTML-содержимое внутри них может перекрестно выполнять скрипт в вашем контексте безопасности.

Обеспечить безопасность функции загрузки файлов сложно . Дополнительные обсуждения .

17
ответ дан 4 December 2019 в 06:35
поделиться

Ни расширение файла, ни тип MIME не могут обеспечить 100% -ную безопасность при работе с файлом изображения. Но пока вы не собираетесь выполнять файл (например, используя include ()), это не проблема, и вам не нужно проверять PHP-код или что-то еще. Единственное нарушение безопасности, которое можно вообразить при использовании поддельного файла изображения, - это то, что использует механизм рендеринга браузера. От этого невозможно эффективно защититься со стороны сервера, и это ответственность производителя браузера.

Итак, если вы убедитесь, что используете is_uploaded_file () и move_uploaded_file () при обработке загрузки, все будет в порядке, по крайней мере, на фронте формата изображения. Обязательно прочтите сообщение @bobince ниже и перейдите по ссылке, в нем содержится много полезной информации о других аспектах безопасности при работе с файлами.

Однако вы можете для обеспечения максимальной безопасности, конечно, скопировать изображение в новый контейнер изображений с использованием GD's imagecopy . Это приведет к удалению любой ID3 и другой информации заголовка, содержащейся в файле, и, вероятно, уничтожит любые попытки эксплойта (GD, вероятно, подавится таким файлом и вернет ошибку). Это, конечно, работает только для форматов GIF, JPEG и PNG, и вы можете столкнуться с некоторыми проблемами, такими как проблемы с альфа-каналом и цветовым профилем.

Однако для обеспечения максимальной безопасности можно, конечно, скопировать изображение в новый контейнер изображений, используя копию изображения GD . Это приведет к удалению любой ID3 и другой информации заголовка, содержащейся в файле, и, вероятно, уничтожит любые попытки эксплойта (GD, вероятно, подавится таким файлом и вернет ошибку). Это, конечно, работает только для форматов GIF, JPEG и PNG, и вы можете столкнуться с некоторыми проблемами, такими как проблемы с альфа-каналом и цветовым профилем.

Однако для обеспечения максимальной безопасности можно, конечно, скопировать изображение в новый контейнер изображений, используя GD imagecopy . Это приведет к удалению любой ID3 и другой информации заголовка, содержащейся в файле, и, вероятно, уничтожит любые попытки эксплойта (GD, вероятно, подавится таким файлом и вернет ошибку). Это, конечно, работает только для форматов GIF, JPEG и PNG, и вы можете столкнуться с некоторыми проблемами, такими как проблемы с альфа-каналом и цветовым профилем.

19
ответ дан 4 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

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