Как защитить общедоступную папку загрузки изображений от манипуляций / прямого доступа - PullRequest
0 голосов
/ 14 декабря 2011

Я нашел несколько ответов на этот вопрос, но каждый случай отличался от моего.Прежде чем я потрачу часы на реализацию того, что, я думаю, сработает, я бы хотел получить мнение или два.Кто знает, может быть, есть более простое решение, которое пойдет на пользу кому-то еще!

Я нахожусь в процессе создания веб-сайта, который предоставляет услугу модификации фотографий.Каждый из моих клиентов будет загружать свои фотографии, используя модифицированную версию скрипта загрузки jQuery / PHP, которую я нашел на Github ( Загрузка файла BlueImp скрипт - поддерживает BlueImp!) Когда каждое изображение будет загружено, миниатюраизображение отображается рядом с именем файла изображения.

На странице загрузки создается папка на основе их номера заказа и подпапка с миниатюрами, в которой хранятся изображения.Например, для заказа № 12345:

/ uploads / 12345 <- папка, в которую будут загружены изображения </p>

/ uploads / 12345 / thumbs <- папка, в которой миниатюры будут обслуживаться с </p>

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

Вот решение, о котором я подумал:

Разделите папки.Переместите основную папку загрузки за пределы корня документа, но оставьте папку с миниатюрами внутри корня документа, чтобы миниатюры могли отображаться после каждой загрузки.Когда пользователь завершит загрузку своих изображений, удалите папку с миниатюрами, соответствующую этому заказу №.

Есть ли лучший способ сделать это?Моя проблема заключается в том, чтобы запретить доступ к фотографиям (клиенту нужно будет только загрузить их один раз, затем дождаться, пока мы закончим изменения. Им НЕ нужно будет входить в систему, чтобы загрузить их.) Я не хочу, чтобы кто-то могполучить доступ к папке загрузки через адресную строку или где-либо еще.Могу ли я использовать файл .htaccess для ограничения доступа, но при этом разрешить ссылки на миниатюры изображений с помощью сценария загрузки?

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

Ответы [ 3 ]

4 голосов
/ 14 декабря 2011

двусторонний

  1. В каждой директории напишите index.html, что запретит доступ к файлам.
  2. Напишите ниже в .htaccess (если не существует, создайте этот файл)

    Options -Indexes
    

    ИЛИ Если вы хотите НЕТ ВХОДА за пределы локальной сети

    # no nasty crackers in here!
    order deny,allow
    deny from all
    allow from 192.168.0.0/24
    # this would do the same thing..
    #allow from 192.168.0.0 to 192.168.0.24
    

Ссылка
Еще один

0 голосов
/ 14 декабря 2011

Две вещи, которые вы должны сделать:

Отключить индексирование каталогов.

Всегда держать имена файлов случайными.Сопоставьте их, используя базу данных.т.е. file1.jpg-> file_af324234324324ff.Вы также можете сохранить информацию о файле миниатюр в той же таблице.

0 голосов
/ 14 декабря 2011

Вы хотите показать превью каждому владельцу клиента, а не другим? зная номер заказа (это sequenziell), вы можете легко попробовать несколько ссылок и посмотреть несколько фотографий.

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

Второе решение: введите пароль с помощью .h для доступа к папке загрузки и создания большого пальца при создании страницы подтверждения заказа без сохранения большого пальца. (он должен увидеть это только один раз, как вы упоминаете).

веселись!

...