Допустим, у вас есть много файлов html, css, js, img и т. Д. В каталоге на вашем сервере.Обычно любой пользователь в сети Интернет может получить доступ к этим файлам, просто набрав полный URL-адрес примерно так: http://example.com/static-files/sub/index.html
Теперь, что если вы хотите, чтобы только авторизованные пользователи могли загружать эти файлы?В этом примере предположим, что ваши пользователи сначала входят в систему с URL-адреса, подобного следующему: http://example.com/login.php
Как разрешить вошедшему в систему пользователю просматривать файл index.html (или любой из файлов в разделе «static»)?-files "), но ограничить доступ к файлу для всех остальных?
Пока что я нашел два возможных решения:
Решение 1
Создайте следующееФайл .htaccess в разделе «static-files»:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ ../authorize.php?file=$1 [NC]
А затем в authorize.php ...
if (isLoggedInUser()) readfile('static-files/'.$_REQUEST['file']);
else echo 'denied';
Этот файл authorize.php сильно упрощен, но вы получаетеидея.
Решение 2
Создайте следующий файл .htaccess в "static-files":
Order Deny,Allow
Deny from all
Allow from 000.000.000.000
И тогда моя страница входа может добавить, чтоФайл .htaccess с IP-адресом для каждого пользователя, который входит в систему. Очевидно, что для удаления старых или более неиспользуемых IP-адресов также потребуется некоторая процедура очистки.
Я беспокоюсь, что мое первое решение может стоить довольно дорого на сервере, так как увеличивается количество пользователей и файлов, к которым они обращаются.Я думаю, что мое второе решение будет гораздо менее дорогим, но также менее безопасным из-за подмены IP-адреса и т. Д. Я также беспокоюсь о том, что запись этих IP-адресов в файл htaccess может стать узким местом приложения, если одновременно существует много пользователей.
Какое из этих решений звучит лучше и почему?В качестве альтернативы, вы можете придумать совершенно другое решение, которое будет лучше, чем любое из них?