2013-07-23 3 views
2

Я беспокоюсь о безопасности. Мне нужно разрешить определенной группе пользователей загружать документы и всех остальных пользователей для их загрузки.Где я могу разрешить загрузку и загрузку для сохранения?

Где или какая папка - лучшее место, чтобы это произошло? Я читал, что за пределами корня сайта лучше всего, но потом я читал конфликтующие сообщения.

Спасибо за любую помощь.

+0

Попробуйте взглянуть на [Security SE] (http://security.stackexchange.com/) или спросить его, если нет полезного ответа. – HamZa

+0

ОК спасибо. Я посмотрю. – user2608855

ответ

1

Все зависит от того, что вам нужно, чтобы иметь возможность делать с ними, как только они будут загружены.

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

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

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

+0

Привет, спасибо за ответ. Группе, которая будет загружаться, будет доверять (это их сайт). Мне нужно будет отобразить список документов на других страницах, чтобы другие пользователи могли их просматривать и загружать. Я буду использовать черный список, чтобы можно было загружать только pdf-файлы и т. Д. – user2608855

1

Я вообще сохранять файлы в папку вне сети root (обратите внимание, что не только за пределами моего корневого сайта, но и вне реального корневого каталога). Вы только просили совета о том, где лучше всего хранить файлы, но, предположительно, вы предпринимаете другие шаги, чтобы сделать загруженные файлы безопасными (например, изменение имени файла, изменение разрешений на файл и т. Д.). Удачи!

+0

Привет, я не собирался менять имена этих файлов. В чем польза от этого? Если это называется «Training Handout 1.pdf», я тогда надеялся извлечь из базы данных и отобразить ее на другой странице в качестве ссылки для скачивания soemone. И разрешения ... Не могли бы вы объяснить, пожалуйста? – user2608855

+0

@ user2608855 Подумайте об этом таким образом. У вас есть папка, которую вы загружаете, вы все там храните. Пользователь A загружает файл под названием «abc.pdf», пользователь B загружает другой файл под названием «abc.pdf». Они не то же самое, так что вы теперь будете делать? Я вижу следующее решение: когда кто-то загружает файл, вы переименовываете файл в уникальное имя файла (например, hashing + timestamp?) И сохраняете его в папке. Вы сохраняете исходное имя файла вместе с уникальным именем файла в базе данных, чтобы вы всегда могли их восстановить. Вы также можете добавить другую информацию о файле, если хотите. – HamZa

+0

Ну, вы не хотите, чтобы кто-то загружал исполняемый файл (файл, который выполнял разрешения), который они могут найти на вашем веб-сервере (потому что они знают его имя) и запускается. Итак, я бы посмотрел тип mime загруженного файла, чтобы убедиться, что это тип файла, который вы готовы принять (например, файл PDF или RTF), затем я бы изменил его имя , так что вы знаете его имя, но загрузчик этого не делает. Затем, используя chmod, я изменил бы разрешения файла на 0644 http://php.net/manual/en/function.chmod.php – Tocacar

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