简短答案:是
这个问题的答案是明确的,否则完全不负责任。
长答案:一个真实的例子
请允许我提供一个非常真实的示例,该示例来自我的真实服务器,其中,移出wp-config.php
Web根目录明确阻止了其内容的捕获。
错误:
请看一下对Plesk中的错误的描述(已在11.0.9 MU#27中修复):
将订阅与托管计划同步后,Plesk重置子域转发(117199)
听起来无害,对吧?
好吧,这是我触发此错误的方法:
- 设置子重定向到另一个网址(例如
site.staging.server.com
到site-staging.ssl.server.com
)。
- 更改了订阅的服务计划(例如,其PHP配置)。
当我这样做时,Plesk将子域重置为默认值:提供的内容~/httpdocs/
,而没有任何解释器(例如PHP)处于活动状态。
而且我没有注意到。数周。
结果:
- 随着
wp-config.php
在网站根目录,请求/wp-config.php
将已下载WordPress的配置文件。
- 随着
wp-config.php
Web根目录外,请求/wp-config.php
下载一个完全无害的文件。实际wp-config.php
文件无法下载。
因此,很明显,移出wp-config.php
网络根目录在现实世界中具有真正的安全优势。
如何移动wp-config.php
到服务器上的任何位置
WordPress会在您的WordPress安装上方自动为您的wp-config.php
文件查找一个目录,因此,如果已将其移动到该目录,就可以完成!
但是,如果您将其移到其他地方怎么办?简单。wp-config.php
使用以下代码在WordPress目录中创建一个新文件:
<?php
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Location of your WordPress configuration. */
require_once(ABSPATH . '../phpdocs/wp-config.php');
(请确保将以上路径更改为重定位wp-config.php
文件的实际路径。)
如果您遇到的问题open_basedir
,只需open_basedir
在PHP配置中将新路径添加到指令中:
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
而已!
分开相反的论点
任何反对搬离wp-config.php
网络根源的争论都基于错误的假设。
论据1:如果禁用了PHP,则它们已经在
有人看到[ wp-config.php
] 的唯一方法就是绕过服务器的PHP解释器……如果发生这种情况,您就已经麻烦了:他们可以直接访问您的服务器。
假:我上面描述的情况是配置错误的结果,而不是入侵。
论点2:偶然禁用PHP的情况很少见,因此可忽略不计
如果攻击者有足够的权限来更改PHP处理程序,那么您已经搞砸了。根据我的经验,偶然的更改非常罕见,在这种情况下,更改密码很容易。
假:我上面描述的情况是常见服务器软件中的一个错误导致了常见服务器配置的错误。这几乎是“罕见的”(此外,安全性意味着担心这种罕见情况)。
WTF:如果在入侵过程中获取了敏感信息,则在入侵后更改密码几乎没有帮助。真的,我们是否仍然认为WordPress仅用于休闲博客,并且攻击者仅对污损感兴趣?让我们担心保护我们的服务器,而不仅仅是在有人进入后恢复它。
论据3:拒绝访问就wp-config.php
足够了
您可以通过虚拟主机配置来限制对文件的访问,或者
.htaccess
–与移出文档根目录一样,有效地限制对文件的外部访问。
FALSE:假设您的虚拟主机服务器默认值为:no PHP,no .htaccess
,allow from all
(在生产环境中很少见)。如果您在例行操作(例如面板更新)期间以某种方式重置了配置,则所有内容都将恢复为默认状态,您将处于暴露状态。
如果在将设置意外重置为默认值时安全模型失败,则需要更高的安全性。
WTF:为什么有人会特别建议减少安全层?昂贵的汽车不仅有锁,而且还有锁。他们也有警报器,防盗器和GPS追踪器。如果有什么值得保护的地方,那就做对。
论点4:未经授权的访问wp-config.php
没什么大不了的
数据库信息实际上是[ wp-config.php
]中唯一敏感的内容。
否:身份验证密钥和盐可以用于多种潜在的劫持攻击。
WTF:即使数据库凭据是唯一的内容wp-config.php
,您也应该对攻击者获得帮助感到恐惧。
参数5:移动wp-config.php
Web根目录以外实际上使服务器更少安全
您仍然必须让WordPress访问[ wp-config.php
],因此您需要扩展open_basedir
以包括文档根目录上方的目录。
否:假设wp-config.php
存在httpdocs/
,只需将其移至../phpdocs/
,并设置open_basedir
为仅包含httpdocs/
和phpdocs/
。例如:
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
(请记住,始终包含/tmp/
或您的用户tmp/
目录(如果有的话)。)
结论:配置文件以后都应该始终被定位在网站根目录外
如果您关心安全性,那么您将移出wp-config.php
Web根目录。