Какое лучшее место на сервере для загрузки изображений? - PullRequest
0 голосов
/ 19 мая 2011

Среди множества папок, доступных на сервере по умолчанию, таких как "public_html", "public_ftp" или просто root, какая из них лучше всего подходит для безопасной загрузки и хранения изображений пользователей, к которой я также могу добавить ссылку на mysql db?

Ответы [ 5 ]

1 голос
/ 19 мая 2011

Определите безопасно.

Если вы хотите отобразить эти изображения на сайте, это будет папка в public_html, очевидно, если вы не хотите использовать скрипт, который представляет изображения пользователю, возможно, изменяя изображение на лету, изменение заголовков кэша и т. д. Затем вы можете переместить эту папку за пределы docroot в любое место, где скрипт будет иметь доступ к этим файлам.

Лично я храню пользовательские изображения, файлы и все, что находится в docroot, защищено .htaccess и доступно через скрипт, который обрабатывает пользовательские разрешения, если это необходимо. Файлы находятся в папке /uploaded с вложенными папками глубиной до 2 уровней, каждый «уровень» хранит до 1024 папок / файлов. Файлы именуются только по их идентификаторам, без каких-либо расширений, вся информация о файлах хранится в базе данных. Мне потребовалось некоторое время для реализации, но, к счастью, это код многократного использования.

1 голос
/ 19 мая 2011

На мой взгляд, храните его вне публичной папки htdocs. Это связано с тем, что если кому-то удастся загрузить что-либо, кроме файла изображения (например, злой скрипт PHP), он не сможет вызвать его (и он не запустится).

Если ваша папка public_html, скажем, /path/to/website/public_html, я бы сохранил их в /path/to/website/uploaded_images

Кроме того, убедитесь, что вы проверили его, чтобы он использовал белый список разрешенных имен изображений (например, разрешающий только .jpg, .gif и .png)

Edit: Вам также необходимо создать скрипт, который открывает файл изображения и передает его обратно пользователю

1 голос
/ 19 мая 2011

Я рекомендую вам сохранить файлы где-нибудь в "public_html" и создать следующий файл для ограничения публичного доступа:

файл: загрузка / .htaccess

deny from all

В вашем php-скрипте вы можете отправлять файлы только пользователям, имеющим доступ.

1 голос
/ 19 мая 2011

Если ваши клиенты загружают изображения через форму http, сохраните их в public_html, если им нужен доступ к ним из Интернета.

0 голосов
/ 19 мая 2011

Подойдет любая папка внутри корня вашего документа. Если вы хотите, чтобы он был безопасным, убедитесь, что ваш скрипт принимает только разрешенный тип файла и, в качестве другой меры, поместите файл .htaccess в эту папку:

<FilesMatch "*.php">
    SetHandler None
</FilesMatch>

Это обеспечит выполнение ничего изнутри этого каталога.

...