【问题标题】:(apache) how to make folder content downloadable only? (treat all files as downloadable object ONLY)(apache) 如何使文件夹内容只能下载? (仅将所有文件视为可下载对象)
【发布时间】:2012-08-24 18:02:43
【问题描述】:

我正在尝试实现一个用户系统 (PHP),其中每个用户都有一个唯一的文件夹, 用户可以将任何文件上传到该文件夹​​并稍后下载。

当前的限制是:文件名中的“htaccess”字符串替换为“hhtaccesss”。 没有创建子文件夹。

我的问题:有没有办法(.htaccess 或其他)制作这些文件仅用于下载目的?为了确保系统上不会运行这些未知文件?

子问题压缩/解压缩这些文件有什么危险吗?

示例:如果用户键入 .php 文件的直接 url,系统将不会处理该文件(这可能是有害的),而只是将其“交付”给用户? 所有类型的脚本/文件都相同..

【问题讨论】:

  • 您可以通过 .htaccess 停止将 php 文件解析为 php。
  • 但是所有其他类型呢?他们太多了。 css,js,asp...我猜超过 100 个。一定是一种将所有文件视为奇怪对象的方法。
  • 应该工作:ForceType application/octet-stream Header set Content-Disposition attachment 那是 2 行

标签: php .htaccess


【解决方案1】:

在.htaccess的相应目录下添加

  ForceType application/octet-stream
  Header set Content-Disposition attachment

应该强制浏览器下载任何类型的文件。如果您想保留一些完整的内容,可以使用<FilesMatch ..

【讨论】:

    【解决方案2】:

    其中一种解决方案是不直接公开文件。例如。将它们存储在非公共目录中并通过另一个页面提供它们,例如download.php,它可以读取文件内容,然后输出并使用“Content-Disposition:附件;”提供它们标题。

    【讨论】:

    • 所以如果我这样做,我可以将(在 .htaccess 中)“全部拒绝”应用到所有文件并且它仍然可以工作吗?如果答案是肯定的,你解决了我的问题:)
    • 这是标准方式,但我对问题的解释略有不同。
    • @Dagon 是的,但这里的问题不是浏览器,而是服务器执行文件。我对 .htaccess 没有足够的经验,但是如果您上传 test.php 然后请求它,它会执行然后将输出作为附件提供给您,还是将文件作为附件返回给您?
    • @valentinas 它只会被视为文本,而不是通过 php 引擎解析。
    • @Dagon +1 互联网给你先生,然后;)
    猜你喜欢
    • 1970-01-01
    • 2018-12-12
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2022-07-03
    • 1970-01-01
    相关资源
    最近更新 更多