Protect Uploads in Multisite

时间:2012-04-11 作者:OleVik

我正在使用WordPress multisite(3.3.1),并试图保护从某些博客上传的内容不被热链接和直接访问。这与How to Protect Uploads, if User is not Logged In?, 但我只想通过服务器上运行的脚本访问上传内容(即,只有服务器可以显示/提供上传服务),因此内容可以受到WordPress用户权限的保护。

例如,我有一个名为40c的字段。jpg位于localhost/files/2011/07/40c。jpg;我想让文件显示出来only 在本地域上由HTML调用时(此处为localhost)。所以not 在WordPress网络上的任何其他站点、任何其他域或直接访问时(即访问localhost/files/2011/07/40c.jpg)。

最好通过在函数中使用WP\\u Rewrite来完成。本网站主题的php;因为这很容易将影响限制在该站点。但使用。WordPress根目录中的htaccess也是一个可行的选项,尽管我认为这意味着必须在那里指定域本身(即localhost)。

关于如何做到这一点,有什么建议吗?我在搜索StackExchange和WordPress时运气很差。org和谷歌。

2 个回复
SO网友:EAMann

你的基本目标中有一些问题。。。

例如,我有一个名为40c的文件。jpg位于localhost/files/2011/07/40c.jpg

好的,这是有意义的,这是图像应该放在第一位的地方。

我希望该文件仅在本地域(此处:localhost)上被HTML调用时显示。因此,WordPress网络上的任何其他站点、任何其他域或直接访问时(即访问localhost/files/2011/07/40c.jpg)。

这就是你的问题所在。。。

在HTML块中引用图像时,HTML不会调用/服务图像。服务器将HTML提供给浏览器,浏览器对其进行解析并查看图像引用,然后浏览器返回并向服务器请求图像。

例如,以下是我自己网站上图像的实际网络活动:Example Screenshot

对于标头中的大代码图像,“我的服务器”将返回以下标记:

<img width="600" height="300" src="http://mindsharestrategy.com/files/2010/12/code.png" class="attachment-Slideshow" alt="code" title="code">
我的浏览器看到了这一点,并对图像发出单独的请求,从服务器下载图像,并将其呈现在屏幕上。

如果我想限制谁可以加载此图像,我会添加on the server 一些截获请求的代码,检查Referer 标头,并返回内容或不返回内容。

此处理完全在WordPress之外。不WP_Rewrite. 没有插件。与主题无关。您可以让Apache通过对.htaccesshttpd.conf, 但这是一项超出本网站范围的系统管理任务。

SO网友:OleVik

有几种方法可以有效地处理这个问题,其中大多数都需要使用插件或类似插件的行为(请参阅Adding mod_rewrite rules to htaccessWP_Rewrite in the Codex). 问题真正在于WordPress如何在多站点环境中处理上传,以及如何应用只影响a specific site.

A.helpful userWordPress.org forums 建议在WordPress根目录的.htaccess文件中添加以下内容(就在“#上载文件”的下方):

RewriteCond %{HTTP_HOST} ^somedomain\\.com
RewriteCond %{SCRIPT_FILENAME} ^([_0-9a-zA-Z-]+/)?files/(.+)
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) - [L]
其中,somedomain是不允许直接访问文件的域。此外,添加Options All -Indexes 还有这个:

# ultimate hotlink protection
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_REFERER}     !^$
 RewriteCond %{REQUEST_FILENAME} -f
 RewriteCond %{REQUEST_FILENAME} \\.(gif|jpe?g?|png)$           [NC]
 RewriteCond %{HTTP_REFERER}     !^https?://([^.]+\\.)?domain\\. [NC]
 RewriteRule \\.(gif|jpe?g?|png)$                             - [F,NC,L]
</ifModule>
防止目录列表和热链接(从Perishable Press), 分别地

希望在未来版本的WordPress中更容易处理这个问题(参见Ticket #19235: Turn ms-files.php off by default).

结束

相关推荐

WordPress网站被谷歌列入关于.htaccess的黑名单

我的网站www.saoyuying。com(该网站中文为:)昨日被列入谷歌恶意软件黑名单。但我在服务器上没有发现任何异常文件。谷歌的报告提到“此网站上的某些URL将浏览器重定向到安装恶意软件的网页。这表示此网站的主机页服务器可能包含更改的配置文件(如Apache的.htaccess文件)。”而我的。htaccess内容复制如下:# BEGIN WPSuperCache # END WPSuperCache # BEGIN WordPress <IfModule mo