初始情况
对于我正在建立的一个网站,我研究了保护上传/下载的整个领域,并根据用户角色/功能限制对其的访问。当然,我已经阅读了之前与(一般)主题相关的一些问题,出于参考原因,我发现了最重要/最有趣的问题:
补充说明
通常,额外提高wordpress安装的安全性不是一个坏主意-例如保护
wp-config.php
- 你可以而且应该做很多事情。如何做到这一点,有大量的信息。在这个问题的背景下,我主要关心我的上传/下载。
Wordpress上传不安全,每个人都可以浏览uploads
文件夹,除非使用.htaccess
:
Options All -Indexes
The
.htaccess
文件必须放置在
uploads
文件夹但这并不能真正保护它们,只会使查找文件变得更加困难。此外,您还可以防止
hotlinking
, E本质上限制访问基于
referrer
- 虽然这是一个有点不同的情况,我想我提到了它,我没有进一步阐述,你可以找到大量的信息。
当然,可以将帖子设置为私有,或者使用合适的模板文件创建自定义帖子类型,以将该帖子类型设置为私有,但这并不能保护您的文件。用条件句包装文件也是如此,例如is_user_logged_in()
或is_admin()
.
另一方面,有很多插件都有希望使您的文件得到安全和保护,但其中许多插件只是假装这样做,原因如下。我之所以要指出这一点,是因为我很确定,这并不是每个人都知道的——所以,要意识到这一点。
目标
我的目的是能够限制对(某些)上传和下载的访问。而且为了确保没有任何不需要的人可以访问这些文件,而不是偶然的,或者如果有人知道文件名,那么这些文件应该是真正私有和安全的。毕竟,只有某些人可以毫无例外地访问。
此外,我没有必要将整个网站私有化,事实上这会适得其反——它被用于公共展示目的。此外,我还希望该解决方案易于使用,原因很简单,一些使用它的人并不完全是计算机专家,通常情况下就是这样。
问题
因此,有没有(相对)简单的方法来限制对(某些)上传和相应下载的访问?就像我所做的那样,这意味着一种真正保护和保障他们的方法?
最合适的回答,由SO网友:Nicolai Grossherr 整理而成
我在此回答我自己的问题,因为我找到了一个解决方案,但我真的对你的意见很感兴趣。或者你有一个更好的解决方案,如果有,我真的很想在这里讨论一下。
研究结果
我的研究结果是:
1。获取文档根目录之外的文件,
www
文件夹
2。禁止直接访问包含文件的文件夹
3。让脚本处理对文件的请求<这些观点的来源至少大部分都包含在我的问题中。
解决方案我安装了插件wp-downloadmanager一个名为files
将在内部创建wp-content
过程中我添加了一个.htaccess
文件到新files
文件夹:的内容.htaccess
:
Options All -Indexes
Order Deny,Allow
Deny from all
我更改了插件的一个重要选项:我的意思是download method
;我把它改成output file
;我在插件界面上添加了一些文件:有一个选项叫做allowed to download
;允许根据用户角色/能力限制访问我做了一些测试:无法直接访问文件,不能通过地址栏或wget访问可以通过他们的永久链接访问公共下载-我选择选项面板上的“好的永久链接:是”和“下载url:文件id”-地址栏/wget也在工作只有以具有正确角色/功能的用户身份登录时,才能访问受保护的受限下载结论性思考
我认为解决方案基本上遵循了研究结果。除了把文件放在外面。但限制对目录的访问/保护并让脚本处理文件请求的操作已经完成。访问限制由.htaccess
本例中的脚本是插件wp-downloadmanger
.
补充说明absolutely necessary 更改download method
到output file
当然这是must 那个.htaccess
文件已就位
要检查插件接管脚本角色的事实,请查看wp-downloadmanger.php
- 关于第207至227行(版本1.6.1);这是作为链接信息的补充点