1

我正在使用会员脚本来允许一群人访问私人文件。问题是任何知道文件链接的人都可以轻松绕过成员脚本并直接访问文件。我的目标是防止通过直接 URL 访问,http://domain.com/folder1/folder2/index.php并且只接受来自http://domain.com/folder1/file_with_link_to_index.php. 会员脚本是无用的,除非我可以阻止人们输入文件位置的 url。

我什至开始理解 Apache 都很难,但我试图做的是使用“全部拒绝”,然后使用“允许来自http://folder1/file_with_link_to_index.php.”。因此只能通过“file_with_link~”访问文件。它没有用。我仍然能够将文件的 url 粘贴到浏览器中并访问该目录。

我在 StackO 上发现了类似的问题,但没有足够的经验来理解和实际提取与我的问题相似的小块并实际使用它们。这可能很简单,但我对试图弄清楚这一点感到非常沮丧,以至于我看不到它。

这是我尝试使用的一个简单示例:

拒绝除此处指明的以外的所有内容

<Limit GET POST PUT>
 order deny,allow
 deny from all
 allow from 12.345.67.890
 allow from http://domain.com/fold1/LINKING_FILE/program_index.php
</Limit>

我很确定我在应该编写域的方式上失败了,也许这就是它不起作用的原因?

4

2 回答 2

1

我会使用另一种方法来解决这个问题,而不是通过 htaccess。将文件放在公共网络无法访问的目录中,然后使用您的会员资格 php 脚本检索它们。

于 2012-10-13T22:37:46.713 回答
0

jTheMan 是对的。有一种更好的方法可以使用 PHP 来解决这个问题。我对我的问题的修复如下,以防它对其他人有用。唯一很棒的补充是让下面的代码只允许从一个 IP 直接访问 URL,比如我自己的 :0)

我将以下文件添加到“head”或“index”或每个应用程序中首先调用的页面的最顶部:

//Begin refuse direct URL Connections
$refering=parse_url($_SERVER['HTTP_REFERER']);
if($refering['host']==$_SERVER['HTTP_HOST']){
   echo "";
} else {
   header("Location: http://www.yourdomain.com");
    exit();
}
//End refuse direct URL Connections

谢谢!

于 2012-10-14T07:16:18.580 回答