我有像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来授予该文件的权限。我知道它可能不是最好的方法,我猜推荐人可能会被欺骗,但它不一定非常安全。我也对你可能需要限制访问的其他想法持开放态度。
答案 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不是一个可靠的标题。