【问题标题】:htaccess or other method to prevent zip file download?htaccess 或其他方法来防止 zip 文件下载?
【发布时间】:2010-12-11 08:10:32
【问题描述】:

有没有办法阻止用户直接从服务器下载 zip 文件? 我尝试在 htaccess 中添加全部拒绝,但它所做的一切都会阻止用户浏览文件夹内容。他们仍然可以直接在浏览器中输入http://site.com/file.zip 并下载..

有什么想法吗?

【问题讨论】:

  • 首先不要将 zip 文件放在那里。 (对于一个严肃的答案,您可能必须描述当您确实想要允许下载文件时的条件)
  • 可以下载它的人只能通过 PHP 会话获得授权。因此,如果他们已登录,从而创建了一个授权用户的会话,那么他们就可以下载它。所有其他人都不能...

标签: .htaccess download zip


【解决方案1】:

使用 mod_rewrite 将任何以 .zip 结尾的 url 重写到进行授权的页面,然后在授权页面中使用 passthru() 提供 zip 文件。

这样的东西(可能无法开箱即用,只是为了给你一个想法):

RewriteRule ^(.*?\.zip)$ authMe.php?url=$1

在这里阅读: http://httpd.apache.org/docs/current/mod/mod_rewrite.html

这里: http://php.net/manual/en/function.passthru.php

【讨论】:

  • 我尝试了这个(rewriterule)的组合仍然无法让它工作......我仍然可以将url粘贴到浏览器中的文件并下载它......
  • 那么你的重写规则与 url 不匹配。尝试匹配所有内容的方法,然后查看您是否最终进入 authMe 页面。例如: RewriteRule ^()$ authMe.php?url=$1 然后,您可以将匹配规则收紧为仅压缩文件或名为 XYZ 的文件夹中的任何文件: RewriteRule ^XYZ/([^/])$ authMe.php?url=$1
【解决方案2】:

如果 htaccess 真的不起作用,那么将这些文件的权限设置为 600 之类的呢? 我的意思是 unix r/w 权限,您可以通过 ftp 等更改它们。 除非网络服务器在您的帐户下运行,否则它将无法访问它们。

【讨论】:

  • 好的,我所做的是将上传的 zip 文件更改为 640 chmod,这会阻止从公共直接访问文件,并且仍然允许对所有者进行完全读/写,因为文件是由“是”所有者的 PHP 脚本呈现...
【解决方案3】:

您可以对目录进行密码保护并将压缩文件放在该目录中。如何做到这一点的综合指南是here

【讨论】:

  • 我正在寻找另一种方式来拒绝他们...如果他们尝试...类似于 404...
  • 如果你不想用密码保护它,实际上根本无法从外部访问它,你为什么要把文件放在那里?只是不要把它放在你的 webroot 中,它是不可见的。即使它不在你的 webroot 中,它仍然可以被 (PHP) 脚本使用,所以如果你需要它,你仍然可以将文件移动到其他地方。
【解决方案4】:

【讨论】:

    猜你喜欢
    • 2014-02-04
    • 2011-04-21
    • 2013-03-21
    • 2011-11-26
    • 2012-12-18
    • 1970-01-01
    • 2016-04-04
    • 2015-10-29
    • 1970-01-01
    相关资源
    最近更新 更多