2009-10-16 2 views
3

Я видел много загруженных форм, взломанных, и некоторые из них действительно неплохие проверки безопасности загружаемого файла (по крайней мере, я так думаю), но кому-то удалось загрузить файл PHP.Устанавливает ли доступ к папке загрузки 777?

Мне было интересно: есть ли способ загрузить файл в папку uploads с полномочиями 777? Я думаю об использовании HTTP PUT.

ответ

6

В целом 777 примерно равен небезопасным, поскольку он получает ... это означает, что любой может читать и писать в ваши файлы.

HTTP PUT не является по своей сути более безопасным, чем HTTP POST, если вы разрешаете загружать файлы на ваш сервер.

В целом, если вы :, позволяющий выполнять произвольные файлы, вам необходимо очень хорошо проверять файлы на стороне сервера, и использование chroot на сервере было бы разумным.

По правде говоря, я, как правило, устанавливаю любую доступную для веб-сайта 644, принадлежащую пользователю веб-сервера.

1

Вам не нужно и не должно иметь разрешения 777 на папку для загрузки. Этого должно быть достаточно, чтобы он был доступен только для чтения и записи для пользователя, на котором работает веб-сервер (с обычными www-данными apache/debian). Кроме того, вы должны отключить (например, через .htaccess) все, что вы не хотите в этой папке, например, выполнить PHP-скрипты (так что даже если это произойдет, когда пользователь загружает PHP, он не может быть выполнен). HTTP PUT не изменяет вашу проблему 777, потому что файл будет по-прежнему присутствовать после его загрузки.

2

Права доступа к папкам - это просто, чтобы ваш пользователь httpd/Apache мог писать в эту папку. На самом деле вам не нужно chmod 777 для вашей папки для хранения. Просто убедитесь, что вы установили владельца в root и группу для пользователя Apache/httpd, который вы используете, или просто просто установите владельца папки для вашего пользователя Apache.

chmod 774 /upload/folder: доступен для записи владельцу и группе, а остальные только что прочитаны.

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

Если эта папка является частью вашей корневой папки документа системы/приложения, то файл .htaccess и использование директивы removeHandler Apache может сделать трюк.

Смежные вопросы