2016-05-18 4 views
1

Я работаю над порталом, который требует, чтобы пользователи загружали изображения, которые будут отображаться на определенных HTML-страницах. Какая должна быть хорошая практика здесь?Просить пользователя загрузить изображения или использовать удаленные изображения

  1. Следует ли мне загружать и запрашивать у пользователей собственный URL-адрес для изображений?

  2. Запросить пользователей для загрузки файлов с изображениями.

Поскольку мы знаем, изображение может быть смертельным, если оно содержит инъекцию кода, но как насчет удаленных, они защищены?

Thanks

+1

Удаленные изображения означают, что любое изображение, проживающее на удаленном ресурсе, может быть изменено ANYTIME, полностью вне вашего контроля. например Пасты пользователей в связи с изображением Микки Мауса, вы одобряете это, то пользователь изменяет удаленное изображение, чтобы быть хардкор порно. «Упс». –

ответ

2

Это зависит от вашего сайта консистенции. Загрузка гораздо лучше, чем ввод URL-адреса, например, если целевая аудитория - это профессиональные клиенты, которых они предпочитают загружать, поскольку было бы трудно объяснить им, что такое удаленный URL-адрес и как его получить. Но загрузка - это более традиционный способ и легче.

С другой стороны, если большинство ваших целевых аудиторий являются интернет-пользователями, тогда, возможно, нет необходимости предоставлять параметр загрузки. Но, как я сказал, загрузка более естественна и удобна для пользователей. Это также зависит от типа изображений, если изображения являются аватаром пользователя, тогда загрузка будет соответствовать, и если пользователи добавят изображения на ваш сайт, чтобы обмениваться ими только с другими сайтами, тогда более подходящий удаленный URL-адрес.

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

Так что, если вы хотите загрузить функцию или хранения удаленных изображений на ваш сервер вы должны сделать некоторые определенные шаги, чтобы обеспечить безопасность вашего сервера:

  1. Verify расширения файла и мимики, чтобы быть действительного изображения , (Не стоит полагаться только на это.)

  2. Убедитесь, что это правильный файл изображения (с помощью PHP getimagesize)

  3. Изменение размера и скопировать изображение в новый объект изображения. И сохраните это изображение на своем сервере.

  4. Папка, в которой вы собираетесь хранить, должна отключать все виды выполнения кода при использовании.Htaccess (SetHandler по умолчанию обработчик)

1

Ну, это зависит от характера проекта.

Фактически любой способ может быть точным, но вы должны проверить и отфильтровать ввод пользователя.

Существует много вариантов проверки файла, если это изображение или нет. Функция getimagesize() от php может быть упомянута в качестве примера, так как каждый файл изображения должен иметь разрешение и другие соответствующие данные.

Есть еще вопросы о SO здесь, которые также отвечают на ваши вопросы, вам просто нужно взглянуть.

Validate image file php

1

В дополнение к предложениям Гулам Али:

Убедитесь, что дезинфицировать имена файлов. Лучше всего создавать новые имена файлов для загруженных пользователем носителей.

Имейте каталог загрузки только с правами доступа для записи, но это может привести к некоторым осложнениям.

Помимо решения проблем безопасности, вам также необходимо будет определить другие важные вещи, такие как ориентация, поскольку носители, взятые с мобильного устройства, могут иметь случайную ориентацию.