【问题标题】:How to grant permission to certain files using .htaccess如何使用 .htaccess 授予对某些文件的权限
【发布时间】:2016-01-22 11:55:34
【问题描述】:

在我正在开发的 wordpress 网站中,我的数字产品存储在 uploads 文件夹中。我发现当您知道 url 时,该文件夹是可以公开访问的。 因此,当我输入http://my-site.com/wp-content/uploads 时,我会得到一个目录列表,其中包含所有公开的文件,易于下载。这当然不是我想要的。我在网上找到了一个使用这个 .htaccess 代码的解决方案:

IndexIgnore *
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?my-site\.com/ [NC]
RewriteCond %{REQUEST_URI} !hotlink\.(gif|png|jpg|doc|xls|pdf|html|htm|xlsx|docx) [NC]
RewriteRule .*\.(gif|png|jpg|doc|xls|pdf|html|htm|xlsx|docx)$ http://my-site.com

这很好,每个输入 url 的人都会被重定向到主页。 购买商品的下载进展顺利,因为请求来自站点内部。但是有一个徽标文件(在 WooCommerce 电子邮件中使用)必须是可访问的。现在,电子邮件中没有显示徽标,因为系统认为这不是来自站点内的请求,因此访问被拒绝。我可以使用上述代码的更新版本授予对该文件的访问权限吗?如果可以,我必须进行哪些更改?请指教。

你很快就会收到 HTH。

【问题讨论】:

    标签: php wordpress .htaccess


    【解决方案1】:

    首先,您可以使用Options -Indexes 禁用.htaccess 中的目录列表。更多信息请参考https://wiki.apache.org/httpd/DirectoryListings

    然后,使用标头 Referer 作为安全措施可能很危险,因为它很容易更改。

    您应该考虑用一个脚本替换这部分,该脚本管理一种访问列表以允许或拒绝对原始文件的访问(例如 Amazon S3 上的临时密钥)。

    【讨论】:

    • 在上面的代码中,我设法用IndexIgnore *“隐藏”了所有目录,我认为这很好用。我不确定您所说的 Header referer 是什么意思不安全。其他人可以通过什么方式改变它?您不需要访问该文件夹吗?你能多解释一下吗?
    • headerReferer是客户端发送的,所以客户端可以随意更改。您可以在此处阅读有关此标头的更多信息:en.wikipedia.org/wiki/HTTP_referer 和引用欺骗:en.wikipedia.org/wiki/Referer_spoofing
    猜你喜欢
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2019-04-13
    • 2015-06-27
    • 1970-01-01
    • 2019-07-23
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多