Безопасный скрипт загрузки файлов PHP

Я задал этот вопрос дважды, я думаю, но это первый раз, когда я приблизился к этому вопросу. Я планирую разрешить пользователям загружать и загружать их файлы (.pdf, .doc, .exl, .ppt, .png, .jpg, .gif).

Будут ли эти советы достаточными:

  • Ограничение скорости загрузки с помощью PHP
  • PHP Неопределенная ошибка индекса $ _FILES?
  • $ _FILE upload large file дает ошибку 1, хотя upload_max_size больше размера файла
  • Как я могу определить истинное расширение / тип файла программно?
  • PHP - Максимальный общий размер загрузки?
  • Имена файлов PHP temp для загружаемых файлов
  • http://blogs.sans.org/appsecstreetfighter/2009/12/28/8-basic-rules-to-implement-secure-file-uploads/

    Кроме того, есть ли сценарий, который я могу использовать, я новичок в php.

  • Многомерный список каталогов с рекурсивным итератором
  • с помощью приглашения браузера загрузить файл
  • php DirectoryIterator сортирует файлы по дате
  • почему мой загруженный файл поврежден или поврежден?
  • Загрузите файл на сервер с URL-адреса
  • Force загрузить файл с PHP, дающим пустой файл
  • 3 Solutions collect form web for “Безопасный скрипт загрузки файлов PHP”

    поздний ответ, но я думаю, что ваш сценарий должен основываться на этом: http://blog.insicdesigns.com/2009/01/secure-file-upload-in-php-web-applications/

    он охватывает все аспекты безопасности и объясняет все действительные точки. Надеюсь, это поможет.

    EDIT: вышеупомянутая ссылка мертва, вот кешированная версия этой статьи .

    Для будущих читателей, которые также новы к php:

    Прежде чем читать руководство, упомянутое в ответе Рики на https://stackoverflow.com/a/7065880/1815624 , в котором упоминается хорошее руководство и вызывающе рекомендуемое чтение, я бы посоветовал сначала прочитать этот ответ:

    https://security.stackexchange.com/a/32853/31943

    затем прочитайте руководство, упомянутое Рики:

    http://blog.insicdesigns.com/2009/01/secure-file-upload-in-php-web-applications/

    В конце концов, если вам нужна дополнительная безопасность, вам следует отключиться от Интернета. :П

    Существует миллион файлов, загружающих скрипты. Это не хуже других.

    Хотя «защита» от загрузки файлов, отличных от png, не будет работать (она проверяет только имя файла).

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

    • никогда не обслуживайте предоставленные пользователем файлы из того же домена, что и ваша веб-страница . У вас есть отдельный домен для загрузки. Таким образом, даже если кому-то удастся загрузить флеш-анимацию или фрагмент HTML, ваш домен не пострадает от междоменной атаки (например, если ваше приложение имеет домен example.org, вы должны обслуживать пользовательский контент, скажем, через загрузки. example.com);
    • всегда обслуживают загруженные файлы с хорошо контролируемыми заголовками.
    PHP is the Best Programming Language in the world.