Помогите защитить доступ к файлам с помощью htaccess и php?

1

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

Я использую CodeIgniter для принудительного скачивания таких файлов:

$file = file_get_contents($path);

force_download("my_file_name.zip", $file);

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

Я использую несколько 8-10 буквенных ключей для создания путей к файлам, поэтому ссылки на файлы не совсем легко понять... что-то вроде http://mysite.com/as67Hgr/asdo0980/uth89.zip вместо http://mysite.com/downloads/my_file.zip.

Кроме того, я использую .htaccess для запрета просмотра каталогов следующим образом: Options All -Indexes.

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

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

Любая помощь была бы чрезвычайно оценена. Спасибо заранее!

Теги:
.htaccess
file-access

3 ответа

4
Лучший ответ

Сделать так, чтобы веб-сервер не обслуживал файлы ни при каких обстоятельствах, в противном случае все проверки довольно спорные. Лучший способ сделать это - разместить их где-то вне webroot. То есть:.

/
  webroot/         <- root web directory, maybe named www or similar
    index.php      <- your app, served normally
    …other serve-able files…
  files/           <- not part of the serve-able webroot dir
    secret_file    <- web server has no access here

Тогда, если единственный способ получить к ним доступ - через script, он будет таким же безопасным, как и ваш script.

  • 0
    Я никогда даже не думал об этом. Прекрасно работает, и, как вы сказали, файлы не обслуживаются через прямые URL-адреса. Огромное спасибо.
1

почему бы не просто Deny from All в .htaccess? Или разместить файлы выше webroot? Этого было бы достаточно. Но ваша текущая настройка уже довольно безопасна. Почему, по-вашему, вам нужна помощь?

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

.htaccess должен выглядеть так, если вы хотите, чтобы их можно было загрузить только с вашего локального хоста. Кроме того, он удаляет некоторые обработчики, которые могут попытаться получить доступ к любому из файлов, на всякий случай. Таким образом, у вас есть доступ к нему. Также рекомендуется хранить там файл index.php, который проверяет существование другого файла, а если существует, установите заголовок, если нет, выйдите.

.htaccess файл:

<Files *>
    Order Deny,Allow
    Deny from all
    Allow from localhost
</Files>

RemoveHandler .php .php3 .phtml .cgi .fcgi .pl .fpl .shtml
  • 1
    Очень смешно, хаха :)
  • 0
    Я думаю, что вы можете опустить строку Allow from localhost , см. Httpd.apache.org/docs/1.3/mod/mod_access.html#allow
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню