使用PHP / Apache限制对静态文件(html,css,img等)的访问X-发送文件
假设您在服务器上的目录中有很多html,css,js,img等文件。通常,Internet-land中的任何用户都可以通过简单地输入完整的URL来访问这些文件,如下所示:http://example.com/static-files/sub/index.html
现在,如果您只希望授权用户能够加载这些文件,该怎么办?对于此示例,假设您的用户首先从如下所示的 URL 登录:http://example.com/login.php
如何允许登录用户查看索引.html文件(或“静态文件”下的任何文件),但将文件限制为其他所有人?
到目前为止,我已经提出了两种可能的解决方案:
解决方案 1
在“静态文件”下创建以下 .htaccess 文件:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ ../authorize.php?file=$1 [NC]
然后在授权中.php...
if (isLoggedInUser()) readfile('static-files/'.$_REQUEST['file']);
else echo 'denied';
这个授权.php文件被严重简化,但你明白了。
解决方案 2
在“静态文件”下创建以下 .htaccess 文件:
Order Deny,Allow
Deny from all
Allow from 000.000.000.000
然后,我的登录页面可以为每个登录的用户附加该.htaccess文件。显然,这还需要有某种清理例程来清除旧的或不再使用的IP。
我担心我的第一个解决方案在服务器上可能会变得非常昂贵,因为他们正在访问的用户和文件的数量增加。我认为我的第二个解决方案会便宜得多,但由于IP欺骗等原因,安全性也较低。我还担心,如果同时有许多用户,将这些IP地址写入htaccess文件可能会成为应用程序的瓶颈。
这些解决方案中哪一个听起来更好,为什么?或者,您能想到一个完全不同的解决方案,比这两个都更好吗?