Я работаю над сайтом, который позволяет пользователям приобретать цифровой контент и внедряет метод, который пытается обслуживать безопасные загрузки.
Я использую 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
просмотра каталогов следующим образом: 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
Затем, если доступ к ним возможен только через ваш скрипт, он настолько же безопасен, как и ваш скрипт.
почему бы просто не 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