3

我的 webshare 根目录中有一个文件夹,其中包含半机密的 pdf 文档。我希望任何访问该文件夹或其文件的人都会收到权限错误。这很容易设置,我可以使用它

<FilesMatch "\.pdf$">
 Order Allow,Deny
 Deny from all
</FilesMatch>

但是,我希望服务器上有一个包含 PHP 脚本的子文件夹,以便能够链接到这些 PDF 文件。笔记; 我不希望 php 能够在服务器内部读取文件,但是对于直接链接这些受限文件的 http 请求突然成为可能。

我读到子文件夹中的 htaccess 文件可以否决在根文件夹 htaccess 文件中设置的文件夹路径更高的规则。为此,我在特定的子文件夹中使用 php 脚本设置了一个 htaccess 文件(使用 all 中的允许),但它似乎不起作用。

4

1 回答 1

2

如果您的/secret/文件夹中有 pdf,并且该文件夹中有一个 htaccess 文件,则该文件将在任何时候访问 pdf 时进行评估,无论谁访问它或从哪里访问它。就网络服务器和 htaccess 文件中的内容而言,唯一的区别是可以区分从谷歌结果列表访问 PDF 的人与您设置的页面碰巧链接到他们的是引用者。

从谷歌,引荐将看起来像:(https://www.google.com/search?q=secret+pdf或什么)

从您设置的页面中,引荐来源网址将类似于您设置的页面的 URL。就是这样,没有其他区别。这意味着您可以与引用者进行匹配,以查看是否有人从谷歌或您的页面点击了您的 PDF 链接。问题是任何人都可以根据自己的喜好来制作引荐来源网址。它可以完全伪造为任何东西,所以如果这是为了防止未经授权的访问,HTTP 引用只是更糟糕的方法。

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://www.yourdomain.com/your_page.html
RewriteRule \.pdf$ - [L,F]

pdf 目录中的 htaccess 文件中的这些规则将阻止来自除 : 之外的任何其他地方http://www.yourdomain.com/your_page.html的链接,除非引用者是伪造的。

于 2013-09-26T06:52:26.807 回答