Безопасный скрипт загрузки файлов PHP - PullRequest
8 голосов
/ 09 февраля 2011

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

Хватит ли этих советов:

http://blogs.sans.org/appsecstreetfighter/2009/12/28/8-basic-rules-to-implement-secure-file-uploads/

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

Ответы [ 3 ]

25 голосов
/ 15 августа 2011

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

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

РЕДАКТИРОВАТЬ: вышеуказанная ссылка не работает, вот кэшированная версия этой статьи .

8 голосов
/ 14 октября 2013

Для будущих читателей, которые также плохо знакомы с 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/

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

3 голосов
/ 10 февраля 2011

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

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

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

  • никогда не обслуживать предоставленные пользователем файлы из того же домена, что и ваша веб-страница . Есть отдельный домен для скачивания. Таким образом, даже если кому-то удастся загрузить флэш-анимацию или фрагмент HTML, ваш домен не будет подвергаться междоменной атаке (например, если ваше приложение имеет домен example.org, вы должны обслуживать пользовательский контент, скажем, из загрузок. example.com);
  • всегда обслуживает загруженные файлы с хорошо контролируемыми заголовками.
...