1

我想使用 .htaccess 文件限制对一个或多个文件的访问。基本上,没有人应该能够使用文件的直接链接来下载文件。但是,应该可以从我的网站访问该文件。

例如,假设我有一个名为 Presentation.ppt 的文件。我希望访问者可以通过我的网站访问它,但如果他们尝试下载它或使用直接链接访问它,那么服务器应该拒绝该请求。

是否可以使用.htaccess 来做到这一点?

先感谢您,

4

4 回答 4

1

您可以拒绝访问每个 IPA 的目录,但服务器的:

<Directory /dir/of/presentation>
    Order Allow,Deny
    Allow from 127.0.0.1
    Deny from All
</Directory>

正如你所指出的那样,那个笨蛋的工作。

将 Mod Rewrite 与将 /dir/of/presentation/* 映射到禁止页面的规则一起使用怎么样。这样直接链接就不行了。请求http://site/content/presentation.ppt
可能被重定向到http://site/forbidden.html

在内部,您可以创建一个链接以http://authorizedRequest/presentation.ppt映射到http://site/content/presentation.ppt

这只是通过默默无闻的安全。它不会阻止任何人直接在他们的浏览器中输入你的“秘密”URI。

于 2012-09-28T20:00:33.320 回答
1

例如,假设我有一个名为 Presentation.ppt 的文件。我希望访问者可以通过我的网站访问它,但如果他们尝试下载它或使用直接链接访问它,那么服务器应该拒绝该请求。

是否可以使用.htaccess 来做到这一点?

这是可能的,但有办法绕过它。您需要检查浏览器发送的引荐来源网址,但任何人都可以欺骗,有时浏览器可能会选择不包含引荐来源网址。

如果您尝试保护文件Presentation.ppt,请将这些规则放在文档根目录的 htaccess 文件中:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^(https?://)?your_website.com
RewriteRule ^/?path/to/Presentation.ppt - [L,F]

如果要保护文件夹/path/images/,则:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^(https?://)?your_website.com
RewriteRule ^/?path/images - [L,F]
于 2012-09-28T22:02:25.500 回答
1

谢谢大家的答案。我已经尝试了你所有的建议,但我仍然无法让它发挥作用。但是,我确实想出了一个可行的解决方案。

第 1 步:通过删除单词索引来禁用或关闭Web 服务器上的选项索引,使其他所有内容保持不变。在某些情况下,您可以使用 .htaccess 文件执行此操作。如果您无法使用 .htaccess 执行此操作,那么您将不得不在您的服务器中查找 httpd.conf 文件。它通常位于 etc/apache/httpd.conf 或 etc/httpd/conf/httpd.conf。找到它后,在其中关闭此选项。

第 2 步:在您的网页文件夹中创建一个文件夹,然后随意命名,但要确保它不容易被猜到或很明显(即 Joe33CompanyOCT2MeBoss)。然后,将您想要隐藏或保护访问者的文件移动到此文件夹中。

第 3 步:在 robots.txt 文件中,通过输入“禁止您的文件夹名称”来禁止所有机器人或爬虫索引您的文件夹或该文件夹中的文件。

第 4 步:然后您必须使用下面的类似代码创建一个 PHP 文件。下面的代码将强制下载。

        $File1 = 'http://yourwebsite.com/Joe33CompanyOCT2MeBoss/Presentation.ppt';
        header("Content-Disposition: attachment; filename=\"".basename($File1)."\"");
        header("Content-Type: application/force-download");
        ob_end_clean();
        flush();
        readfile($File1);
        exit;

这种方式文件的直接路径对您的访问者隐藏,即使他们可以直接下载文件,他们也不知道文件的实际 URL,因为强制下载 php 代码不会显示文件的实际路径。所以,现在我网站的访问者必须通过我的网页下载这个文件,而不是直接下载。

以下 stackoverflow 问题对帮助我解决编程问题非常有帮助。谢谢,

如何在 PHP 中自动开始下载?

php文件强制下载

于 2012-10-02T14:45:26.460 回答
0

最简单的(虽然不是防弹的)是在 HTTP_REFERER 不正确时重定向用户代理。这可以在服务器配置中使用 mod_rewrite 或(第二选择)在 .htaccess 类文件中完成。它有助于防止简单的热链接(通过 url 引用您的文件的链接)。

您应该阅读 moapaches d_rewrite 的详细文档。

于 2012-09-28T20:00:21.800 回答