如何限制对上传文件的访问?

时间:2011-04-04 作者:mike23

我在网站上有一个限制区,只有登录的用户才能访问。为此,我创建了一个带有“current\\u user\\u can()”条件的页面模板。

我的问题是,如果您将完整路径放入浏览器地址栏,任何人都可以访问附加到受限页面的文档。

是否有办法限制对上载文件的访问?

编辑:我想澄清一下,这些文件应该只有登录用户才能访问。

4 个回复
最合适的回答,由SO网友:anu 整理而成

这并不是WordPress的问题,但你可以添加一个重写规则来阻止访问,除非引用者是你自己的域。

[更新]

你需要做两件事

添加重写规则(直接使用.htaccess或使用WP\\u rewrite(Codex reference). 这里的目的是拒绝对您的文档的请求,这些文档没有您的域作为推荐人-这可以阻止人们将链接粘贴到浏览器的地址栏中

将下载链接包装在is_user_logged_in (Codex reference) 条件阻止-这样,只有用户登录后,它们才会显示在页面上

相关问题中提供了代码示例:

SO网友:Nicolas

我会将上载目录更改为www文件夹之外的目录。然后使用“代理”页面“发送”文件。代理页面检查是用户被记录,然后它使用header()/readfile()发送文件。

SO网友:keatch

您可以使用所选的Web服务器使用热链接保护。

查看此StackOverflow答案:
https://stackoverflow.com/questions/1775582/apache-hotlink-protection-for-download-folder.

这是在使用apache2。htaccess

基本上,如果用户不是来自你的博客页面,你就是在拒绝下载!

SO网友:thetitan

注册的纯用户插件看起来只是为了确保在查看页面内容之前登录了访问者。通过浏览器访问文件由服务器控制。

您应该尝试WP插件AskApache Password Protect-http://wordpress.org/extend/plugins/askapache-password-protect/

当然,只有当您的WordPress博客托管在Apache服务器上时,这才有效。

结束

相关推荐

query users by role

我有一个查询用户和usermeta的自定义插件,但我现在需要从结果中筛选管理员。我的sql查询的一个非常简化的版本是:SELECT * FROM usermeta LEFT JOIN users ON users.ID = user_id WHERE meta_key = \'last_name\' AND user_role != \'admin\' ORDER BY meta_value ASC LIMIT 0, 25 user_role 不是字段,我看