Я работаю над сайтом, который позволяет пользователям приобретать цифровой контент и реализовал метод, который пытается обеспечить безопасную загрузку.
Я использую 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
(или что-то подобное), но я не знаю, с чего начать.
Любая помощь была бы чрезвычайно оценена. Спасибо заранее!
Сделать так, чтобы веб-сервер не обслуживал файлы ни при каких обстоятельствах, в противном случае все проверки довольно спорные. Лучший способ сделать это - разместить их где-то вне 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.
почему бы не просто Deny from All
в .htaccess
? Или разместить файлы выше webroot? Этого было бы достаточно. Но ваша текущая настройка уже довольно безопасна. Почему, по-вашему, вам нужна помощь?
.htaccess должен выглядеть так, если вы хотите, чтобы их можно было загрузить только с вашего локального хоста. Кроме того, он удаляет некоторые обработчики, которые могут попытаться получить доступ к любому из файлов, на всякий случай. Таким образом, у вас есть доступ к нему. Также рекомендуется хранить там файл index.php, который проверяет существование другого файла, а если существует, установите заголовок, если нет, выйдите.
.htaccess файл:
<Files *>
Order Deny,Allow
Deny from all
Allow from localhost
</Files>
RemoveHandler .php .php3 .phtml .cgi .fcgi .pl .fpl .shtml
Allow from localhost
, см. Httpd.apache.org/docs/1.3/mod/mod_access.html#allow