【发布时间】:2011-01-12 07:58:48
【问题描述】:
假设您在服务器上的一个目录中有很多 html、css、js、img 等文件。通常,互联网上的任何用户都可以通过简单地输入完整的 URL 来访问这些文件,如下所示:http://example.com/static-files/sub/index.html
现在,如果您只希望授权用户能够加载这些文件怎么办?对于此示例,假设您的用户首先从如下 URL 登录:http://example.com/login.php
您如何允许登录用户查看 index.html 文件(或“静态文件”下的任何文件),但将文件限制为其他人?
到目前为止,我提出了两种可能的解决方案:
解决方案 1
在“静态文件”下创建以下 .htaccess 文件:
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 文件:
Order Deny,Allow
Deny from all
Allow from 000.000.000.000
然后我的登录页面可以为每个登录的用户附加一个带有 IP 的 .htaccess 文件。显然,这还需要某种清理例程来清除旧的或不再使用的 IP。
我担心随着用户和正在访问的文件数量的增加,我的第一个解决方案在服务器上可能会变得非常昂贵。我认为我的第二个解决方案会便宜得多,但由于 IP 欺骗等原因也不太安全。我还担心如果同时有许多用户,将这些 IP 地址写入 htaccess 文件可能会成为应用程序的瓶颈。
这些解决方案中哪一个听起来更好,为什么?或者,您能想出一个完全不同的解决方案,它会比这两种方法更好吗?
【问题讨论】:
-
使用amazon s3服务怎么样
标签: php security apache .htaccess