В вашем файле .htaccess:
AuthName "Protected"
AuthType Basic
<Limit GET POST>
order deny,allow
deny from all
allow from YOUR.SERVER.IP.ADDRESS
</Limit>
Вот как я это сделаю. Поместите это в файл .htaccess в каталоге, который вы пытаетесь защитить. Будут разрешены только запросы, поступающие с YOUR.SERVER.IP.ADDRESS
(очевидно, измените это на IP вашего сервера), все остальные получат ошибку 403.
Учитывая ваши комментарии, вы захотите сделать это каким-то образом с токенами доступа или чем-то еще. Я бы настроил его на PHP-скрипт на удаленном файловом сервере, который будет обслуживать файлы, если токен доступа совпадает, и тогда вы можете просто получить файл с помощью cURL. Если маркер доступа не совпадает, установите заголовок 403 Forbidden.
Тогда они смогут получить доступ к файлам только с помощью вашего токена доступа. Чтобы сделать токен динамическим, чтобы его нельзя было легко украсть, вы можете взять хеш MD5 соли и динамическую переменную, которая может быть разделена между серверами, как день месяца. Чем чаще обновляются динамические переменные, тем чаще обновляются токены доступа и тем безопаснее вы будете. Старайтесь держать в секрете то, что вы используете для алгоритма хеширования, для лучшей защиты.
Базовый скрипт, который вы можете хранить на файловом сервере:
if($_GET['access'] != md5('aihdhgsa8gas8gasgsa8asgdds' . $YOUR_UPDATING_VALUE)){
//Improper access hash
header('HTTP/1.1 403 Forbidden');
die();
}
$files = array('blah.png', 'lol.exe');
$file_to_serve = $_GET['file'];
if(!in_array($file_to_serve, $files)){
//File isn't in our array
header('HTTP/1.1 403 Forbidden');
die();
}else{
die(file_get_contents($file_to_serve)); //Serve however you need.
}
А на вашем главном сервере:
$file = file_get_contents('http://example.com/serve.php?file=' . $filename . '&access=' . md5('aihdhgsa8gas8gasgsa8asgdds' . $YOUR_UPDATING_VALUE));
Это очень грубые примеры, и вам нужно переделать обслуживание и загрузку в конфигурации вашей системы, но вы поймете, в чем суть. $YOUR_UPDATING_VALUE
должно быть то, что оба сервера могут рассчитывать, что обновления довольно часто, я бы посоветовал против microtime
, потому что будет задержка при загрузке с другого сервера, и это всегда будет ложным.