使用.htaccess限制对文件下载的访问

时间:2011-01-11 06:50:03

标签: apache .htaccess

我有像product.exe这样的静态文件的下载。我想限制访问 使用.htaccess文件访问这些文件,以便只有某些用户可以下载它。

我认为这可以用mod_rewrite处理,我在网上发现了这个片段 使用引荐来阻止不良网站。

RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} http://example.com/downloads/confirm/3811 [NC,OR]
RewriteRule .* - [F]

来源:http://www.javascriptkit.com/howto/htaccess14.shtml

我想基于引用来允许,而不是基于引用来阻止。这样,引用者可以是一个没有首先登录就无法访问的URL。我正在考虑使用这个路由并使用http referrer来授予该文件的权限。我知道它可能不是最好的方法,我猜推荐人可能会被欺骗,但它不一定非常安全。我也对你可能需要限制访问的其他想法持开放态度。

2 个答案:

答案 0 :(得分:3)

如果您想基于推荐人而允许:

RewriteCond %{HTTP_REFERER} !^http://goodsite-1.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://goodsite-2.com/from/there.php [NC]
RewriteCond %{HTTP_REFERER} !^$ # There are some users/browsers not sending referrer..
RewriteRule .* - [F]

或者你可以基于一个cookie来允许,你可以在之前设置一个cookie。 PHP:

RewriteCond %{HTTP_COOKIE} !^.*cookie-name.*$ [NC]
RewriteRule .* - [F]

或者也只允许发布请求:

RewriteCond %{REQUEST_METHOD} !=POST
RewriteRule .* - [F]

以及HTML中“发送请求”的链接到要下载的文件:

<form method="post" action="path/to/download.mp3">
  <input type="submit" value="Click here to download!" />
</form>

实际上你可以将这些方法结合起来。

答案 1 :(得分:0)

由于某些安全问题,http_referrer不是一个可靠的标题。

  • 某些浏览器配置会导致空的http_referrer标头
  • 您可以使用工具来操作http请求标头。您可以查看Firefox开发人员工具。(Ctrl + Shift + I&gt;网络)