问题描述

初步情况

对于正在设置的网站,我正在研究保护上传/下载的整个领域,并根据用户角色/功能限制对它们的访问。当然,我已经阅读过一些以前关于这个 (一般的) 主题的问题,作为参考原因,我发现最重要/有趣的:

补充说明

一般来说,增加 WordPress 安装的安全性并不是一个坏主意 – 例如保护您的 wp-config.php – 有很多事情可以和应该做。有很多信息在那里如何做到这一点。我在这个问题的上下文中主要关注我的上传/下载。

WordPress 上传没有保护,每个人都可以浏览 uploads 文件夹,除非你使用.htaccess 来防止它:

Options All -Indexes

.htaccess 文件必须放在 uploads 文件夹中。但是,这并不是真的保护他们,它只是使得更难找到文件。此外,您可以防止 hotlinking,根本上限制了基于 referrer 的访问 – 虽然这有点不同,我以为我提到它,我不是进一步阐述,你可以找到大量的信息。

当然有可能使私人信息发布或使用合适的模板文件创建自定义信息类型,以使该信息类型为私有,但这并不保护您的文件。可以这样说,用 is_user_logged_in()is_admin()等条件包装文件。

在旁注中有很多插件,有希望使您的文件安全和受保护,但其中许多只是假装这样做,其中的一些原因在上面。我只是在想,因为我很确定它是不知道的每个小孩 – 所以,请注意。

Objective

我的意图是能够限制访问 (一些) 上传和分别下载。为了确保没有人可以访问他们,而不是偶然地,或者有人知道文件名,这些文件应该是非常私密和安全的。毕竟只有某些人才有权无障碍。

此外,我没有必要将整个网站私有化,确实会适得其反 – 用于公开演示。更多的我想要的解决方案是容易使用的,因为一些工作的人不完全是计算机专家,因为通常情况。

Question

因此,问题是,是否有 (相对) 简单的方法来限制访问 (某些) 上传和相应的下载?像我一样,这意味着一种真正保护和保护他们的方式?

最佳解决方案

我在此回答我自己的问题,因为我找到了一个解决方案,但我对你的意见很感兴趣。或者也许你有一个更好的解决方案,如果是这样,我真的很想在这里。

研究成果

我的研究成果是:1. 获取文件外的文件根,www 文件夹; 2. 不允许直接访问包含文件的文件夹; 让脚本处理对文件的请求; 这些要点的来源至少主要包括在我的问题中。

解决方案

  1. 我安装了插件»wp-downloadmanager«

    • 将在 wp-content 内创建一个名为 files 的文件夹,

  2. 我将.htaccess 文件添加到新的 files 文件夹中:

    • .htaccess 的含量:Options All -Indexes Order Deny,Allow Deny from all

  3. 我改变了插件的一个重要选项:

    • 选项我的意思是 download method;

    • 我改为 output file;

  4. 我通过插件界面添加了一些文件:

    • 有一个选项叫做 allowed to download;

    • 这允许基于用户角色/能力限制访问;

  5. 我做了一些测试:

    • 不直接访问文件 – 不是通过地址栏或 wget;

    • 公共下载可以通过他们的永久链接 – 我选择» 不错的永久链接:是 «和» 下载 url:文件 id«在选项面板 – 地址栏/wget 也在工作;

    • 受保护的受限制的下载只有以具有正确角色/功能的用户身份登录时才能访问;

结语

我认为这个解决方案非常符合研究成果。除了将文件放在外面。但限制访问/保护目录,并让脚本处理文件请求已满。访问限制由.htaccess 处理,此时的脚本是插件 wp-downloadmanger

补充说明

  • download method 更改为 output file 是绝对必要的

  • 当然,.htaccess 文件是必须的

  • 检查插件占用脚本的角色的事实,看看 wp-downloadmanger.php – 关于第 207 到 227 行 (1.6.1 版); 这是对链接信息的补充

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。