Я изучаю php, а также выполняю проект, который включает загрузку файлов на сервер. Моя цель - сделать его максимально безопасным, поэтому, где вы рекомендуете сохранять все загруженные файлы. Файлы, которые будут загружены, будут PDF-файлами. Я где-то читал, что лучше сохранять загруженные файлы за пределами корневого документа и в каком-то другом месте, которое я читал, не легко получить доступ к файлам за пределами корня документа из php, поэтому я очень смущен. Любая помощь в направлении лучшей практики для преодоления этой ситуации приветствуется! Благодаря!Где я должен хранить загруженные файлы на сервере?
ответ
Я считаю, что причина, по которой не хранить файлы в корневом пути, теоретически может угадать директор и получить доступ к файлам, вы можете либо изучить разрешения (на сервере), которые могут оказаться очень сложными, либо вы используйте что-то вроде NAS-накопителя (который будет выглядеть так, как если бы он был локальным диском в вашей сети, но никто не может видеть его за пределами сети), однако это может быть дорогостоящим, и это еще одна вещь, которую вам нужно будет изучить (настройка блока NAS) , Если эти два не работают, попробуйте либо использовать отдельный диск на сервере, либо разбить диск на два диска. и сохраняя там файлы, как и для самого кода, просто укажите полный путь и обработайте его так же, как и любой другой файл на корневом диске (вот как я это сделал, но я не PHP pro). Если у вас есть какие-либо другие вопросы, не стесняйтесь спросить, я надеюсь, что я ответил на этот один для вас :)
Вот несколько способов разбиения на разделы дисков:
Vista/Windows Server 2008 (или большинство других окон серверов) : http://blogs.technet.com/b/steve_lamb/archive/2008/07/08/how-to-re-partition-a-hard-disk-under-vista-or-server-2008-without-having-to-re-install.aspx
Удачи вам!
В целях безопасности неплохо хранить заказы временно за пределами корня документа до тех пор, пока они не будут просмотрены для исполняемого кода или не будут уверены, что они ожидаются. Таким образом, любой, кто получает доступ к механизму загрузки, не может загружать бэкдор через свой интерфейс, а затем получать доступ к нему через браузер (и захватить ваш сервер). Также они не могли загрузить вредоносный код, который заставляет ваш сайт делать что-то еще.
После того, как это произошло, для того, чтобы кто-то мог получить доступ к файлам (просмотреть файлы PDF), файлы в конечном итоге должны быть сохранены над корнем документа для хорошего SEO. Таким образом, они могут быть связаны и добываться для информации с помощью поисковых систем, не облагаясь сервером.
Некоторые люди говорят, что вы можете хранить их ниже корня документа, а затем представлять их пользователям как вложение, которое вы передаете им с помощью fread. Проблема в том, что если вы используете большие файлы, вы можете запустить свой экземпляр сервера вне ресурсов, если сразу несколько человек или ботов.
Вы также можете сохранить их непосредственно в базе данных, но это не обеспечивает дополнительной безопасности вне первоначального скрининга. Также требуется память и накладные расходы, чтобы фактически извлечь их из базы данных, и снова поисковые системы могут запустить вашу систему из ресурсов, если они все сразу подключатся.
- 1. Где я должен хранить файлы, загруженные пользователями на моем сервере?
- 2. Где я должен хранить изображения, загруженные пользователями?
- 3. Где я должен хранить загруженные файлы в maven?
- 4. Где я должен хранить загруженные пользователем фотографии и файлы
- 5. Yii2: Где хранить загруженные файлы?
- 6. Сервлеты: где хранить загруженные файлы?
- 7. Где сохранить загруженные файлы на сервере?
- 8. Где я должен хранить свои файлы журналов?
- 9. Где хранить загруженные пользователем файлы в Django
- 10. Где сохранить загруженные файлы?
- 11. MVC и файлы, загруженные пользователем, где хранить файлы?
- 12. где хранить загруженные изображения - в приложении tomcat или на сервере?
- 13. Где я должен хранить токен на клиенте
- 14. Как сохранить загруженные файлы на своем сервере?
- 15. Grails and Tomcat: Где хранить загруженные файлы в файловой системе?
- 16. Где файлы, загруженные Valums ?! (я должен хранить их в базе данных mysql с PHP)
- 17. Должен ли я сохранять загруженные файлы (img) в App_Data?
- 18. где хранить состояние на сервере
- 19. Где хранить дешифрованные файлы?
- 20. Где я должен хранить файлы CSS в установке sharepoint?
- 21. Где хранить изображения на сервере
- 22. Где я могу хранить файлы пользователя?
- 23. Где хранить загруженные статические файлы с Apache Tomcat
- 24. Где хранить загруженные файлы (звук, изображения и видео)
- 25. Где я должен хранить файлы элементов в Cakephp?
- 26. Где я должен хранить свои конфигурационные файлы в приложении WPF
- 27. Где я должен хранить файлы Jasmine в проекте Symfony?
- 28. web2py: Где я должен хранить личные файлы приложений?
- 29. Где хранить загруженные файлы в PHP и MySQL?
- 30. Где я должен хранить свои тестовые активы?
Это вопрос о дискомфорте. Он не подходит для этого сайта. Это ваше решение и все зависит от вас. – shnisaka
Опасность загрузки в корневой каталог документа в основном о том, что произойдет, если человек, выполняющий загрузку, предоставит вам скрипт PHP/CGI, и он отправится на этот URL. Человек будет заставлять вашу систему запускать свой код. Существует также опасность того, что они могут загрузить javascript или что-то еще, что может быть использовано для зла в другом месте вашего сайта, чтобы атаковать ваших клиентов. – Zoredache