Безопасный скрипт загрузки файлов PHP
Я задал этот вопрос дважды, я думаю, но это первый раз, когда я приблизился к этому вопросу. Я планирую разрешить пользователям загружать и загружать их файлы (.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 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);
- всегда обслуживают загруженные файлы с хорошо контролируемыми заголовками.