如今,最常见的安全性最佳做法之一似乎是将wp-config.php移至高于虚拟主机文档根目录的目录。我从来没有真正找到过很好的解释,但是我认为这是为了最大程度地减少读取数据库密码在webroot中恶意或感染脚本的风险。

以便WordPress访问它,因此您需要扩展open_basedir以包括文档根目录上方的目录。难道这不仅破坏了整个目的,而且还可能将服务器日志,备份等暴露给攻击者?

还是该技术仅试图防止wp-config.php被显示为纯文本的情况给任何要求http://example.com/wp-config.php的人,而不是被PHP引擎解析?这似乎是非常罕见的情况,并且不会超过将日志/备份/ etc暴露给HTTP请求的弊端。

在某些托管设置中,有可能将其移动到文档根目录之外公开其他文件,但不公开其他文件吗?
结论:
在反复讨论此问题后,出现了两个答案,我认为应该是被认为是权威的。亚伦·亚当斯(Aaron Adams)很好地支持移动wp-config,而克里斯吉塔吉(Chrisguitarguy)很好地反对了。如果您不是该线程的新手,并且不想阅读整个内容,那么这是您应该阅读的两个答案。其他答案要么是多余的,要么是不准确的。

评论

确实没有必要在问题中插入您选择的答案并拒绝所有其他答案。正如您在下面看到的那样,这就是stackexchange投票系统的作用,用于投票表决对人们有意义的答案,而提问者应该使用“接受的答案”机制和您自己的上下投票。

对于我所问的99%的问题,我都不会这样做,但是我认为在这种情况下是合适的。这个问题有8个答案,其中一些相当冗长/复杂,尽管包含了不正确的信息或没有在对话中添加任何内容,但其中一些还是有很多反对意见。我认为提供半权威性的结论有助于人们首次阅读该主题。与往常一样,读者可以自由决定。我只是作为OP提供自己的意见。

@Kzqai:“ stackexchange投票系统”是一个民主过程,与会人员通常是1)不清楚OP实际要求或试图解决的内容,以及2)不理解任何特定答案的有效性。在答复被滴加并进行表决之后,让OP澄清那些提供帮助的答复将大有帮助。毕竟,OP是唯一知道的人,我希望有更多OP这样做。是的,人们“投票给别人有意义的答案”,但让OP让他对他有意义的事情有最后的决定。

#1 楼

简短答案:是

这个问题的答案是肯定,否则就不负责任了。


长答案:一个真实的例子

允许我从一个非常真实的服务器中提供一个非常真实的示例,其中,将wp-config.php移到Web根目录之外专门阻止了其内容被捕获。

错误:

看看以下有关Plesk中错误的描述(已在11.0.9 MU#27中修复): )


声音无害,对吗?

好吧,这是我触发此错误的方法:


Set设置一个子域以重定向到另一个URL(例如site.staging.server.comsite-staging.ssl.server.com)。
更改了订阅的服务计划(例如其PHP配置)。

当我这样做时,Plesk将子域重置为默认值:提供~/httpdocs/的内容,没有任何解释器(例如PHP)处于活动状态。

而且我没有注意到e。数周时间。

结果:


在Web根目录中使用wp-config.php,对/wp-config.php的请求将下载WordPress配置文件。在Web根目录之外的wp-config.php,一个请求/wp-config.php下载了一个完全无害的文件。无法下载真实的wp-config.php文件。

因此,很明显,将wp-config.php移出Web根目录可以在现实世界中带来真正的安全优势。


如何将wp-config.php移至服务器上的任何位置

WordPress会自动在WordPress安装上方的一个目录中查找wp-config.php文件,因此,如果已将其移至该位置,您就完成了! br />
但是,如果您将其移动到其他地方怎么办?简单。使用以下代码在WordPress目录中创建一个新的wp-config.php

<?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问题,只需在您的PHP配置中将新路径添加到open_basedir指令中:

open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"


就这样!


解决相反的论点

每个反对将wp-config.php移到Web根之外的论点似乎都基于错误的假设。

论点1:如果禁用了PHP,他们已经在


某人看到
[wp-config.php]的内容的唯一方法是,他们是否绕过了您的服务器PHP解释器…
如果发生,您已经遇到麻烦:他们可以直接访问您的服务器。


错误:我上面描述的情况是配置错误的结果,而不是入侵的结果。

论点2:偶然禁用PHP的情况很少见,因此无关紧要


如果攻击者具有足够的权限来更改PHP处理程序,那么您
已经搞砸了。偶然的更改在我的经历中非常罕见,
那样的话,更改密码就很容易。通用服务器软件中的错误,会影响通用服务器配置。这几乎是“罕见的”(此外,安全性意味着要担心这种罕见情况)。

如果在入侵过程中获取了敏感信息,则在入侵后更改密码几乎无济于事。真的,我们是否仍然认为WordPress仅用于休闲博客,并且攻击者仅对污损感兴趣?让我们担心保护我们的服务器,而不仅仅是在有人进入服务器后恢复它。

论点3:拒绝访问wp-config.php足够好


您可以限制访问通过虚拟主机配置或
.htaccess访问文件-有效地限制了外部访问文件的方式,与移出文档根目录的方式相同。


否:假设您的虚拟主机服务器默认值为:否PHP,否.htaccessallow from all(在生产环境中很少出现)。如果您在例行操作期间以某种方式重置了配置(例如面板更新),则所有内容都将恢复为默认状态,并且您处于暴露状态。

如果意外设置导致安全模型失败重置为默认值,您可能需要更高的安全性。

为什么有人特别建议减少安全性?昂贵的汽车不仅有锁,而且还有锁。他们也有警报器,防盗器和GPS追踪器。如果有什么值得保护的地方,请正确解决。

论点4:未经授权访问wp-config.php没什么大不了的。


数据库信息实际上是其中唯一敏感的东西。
[wp-config.php]。


错误:身份验证密钥和盐可以用于多种潜在的劫持攻击。

即使具有数据库凭据是wp-config.php中唯一的东西,您应该害怕攻击者将他们放到手。

论点5:将wp-config.php移到Web根目录之外实际上会使服务器的安全性降低


您仍然必须让WordPress访问[wp-config.php],因此您需要
扩展open_basedir,以包括文档根目录上方的目录。


FALSE:假设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/目录(如果有的话)。)


结论:配置文件应始终始终位于Web根目录之外。

如果您关心安全性,则应将wp-config.php移至Web根目录之外。

评论


如果您在apache,linux或admin的头脑中有错误,那么无论如何您都是敬酒的。在您的情况下,您无法解释为什么在网站的根目录比在服务器上的其他任何位置发生配置错误的可能性更高。配置错误的apache可能访问/../config.php就像/config.php一样容易

–马克·卡普伦
2012年12月4日21:14

您不是“无论如何都敬酒”。一个错误很可能甚至可以证明,一个错误会导致Web根被重置为其默认值,在这种情况下,您不是“敬酒”的人– wp-config.php仍然安全。这是极不可能的,以致于从根本上来说是不可能的,该错误会导致Web根目录任意重置为您放置wp-config.php的确切目录。

–亚伦·亚当斯(Aaron Adams)
2012年12月4日21:23



@IanDunn实际上,很容易将wp-config.php移动到任意位置。我在回答中增加了指示;它只涉及在WordPress目录中创建一个虚拟wp-config.php,引用真实目录的位置。

–亚伦·亚当斯(Aaron Adams)
2012年12月6日4:07

这种反应是即时的。我的网络托管公司发生了驱动器阵列故障。一切都说完了之后,他们部分恢复了系统。事实证明,他们使用了一系列cPanel / WHM脚本来重建httpd.conf文件,但这样做不正确。幸运的是,我已经在doc根目录之外拥有了wp-config.php,但是如果我没有内容,可以在这里获取。是的,很少见,但是如前所述,您需要担心的是罕见的情况。同样,声明“头脑简单的人会迷路”是拥有LESS安全性的不好借口。

–兰斯·克利夫兰
2012年12月6日下午5:46

很好,亚伦。由于我在本评论及其他评论主题中提到的原因,我仍然有些怀疑,但是您已经使我确信它的优点比我最初想象的要多。至少,如果做得正确,我认为这不会伤害任何事情。我仍然有一个问题,就是大多数推广它的人似乎都不了解它的原因,而且他们教它的方式通常会导致httpdocs之上的目录暴露出来,但是您已经帮助解决了这些问题。你的答案。

–伊恩·邓恩
2012年12月6日在16:56

#2 楼

最大的问题是wp-config.php包含一些敏感信息:您的数据库用户名/密码等。

因此,您的想法是:将其移到文档根目录之外,您不必担心任何事情。攻击者将永远无法从外部来源访问该文件。但是,麻烦之处在于:wp-config.php从未在屏幕上实际打印任何内容。它仅定义在WP安装过程中使用的各种常量。因此,某人看到该文件内容的唯一方法是绕过服务器PHP解释器-他们得到.php文件以纯文本形式呈现。如果发生这种情况,那么您就已经麻烦了:他们可以直接访问您的服务器(并且可能具有root权限),并且可以执行他们喜欢的任何事情。

我要继续说,没有从安全角度来看,将wp-config移到文档根目录之外的好处-出于上述原因,这些原因是:


您可以通过虚拟主机配置或.htaccess限制对文件的访问-有效地限制外部访问文件的方式与移动到文档根目录之外的方式相同
您可以确保对wp-config的文件权限严格,以防止没有足够特权的任何用户读取文件,即使他们获得了(限制)通过SSH访问服务器。
您的敏感信息(数据库设置)仅在单个站点上使用。因此,即使攻击者获得了该信息的访问权,它也会影响的唯一站点将是wp-config.php文件所属的WordPress安装。更重要的是,该数据库用户仅具有读取和写入该WP安装数据库的权限,而没有其他权限-无权授予其他用户权限。换句话说,如果攻击者获得了对数据库的访问权限,则只需从备份中还原(请参阅第4点)并更改数据库用户即可。
您经常备份。通常是一个相对术语:如果您每天发布20篇文章,则最好每天或每隔几天备份一次。如果您每周发布一次,则每周备份一次就足够了。
您已将网站置于版本控制下(例如这样),这意味着即使攻击者获得了访问权限,您也可以轻松地检测到代码更改并将其滚动背部。如果攻击者可以访问wp-config,则他们可能已将其他信息弄乱了。没什么大不了的。盐等可以随时更改。唯一发生的事情是,它会使登录的用户cookie失效。

对我来说,将wp-config从文件安全的根源中转移到晦涩难懂的地方-这真是一个稻草人。 />

评论


是的,那几乎就是我一直在想的。我很高兴知道我不是唯一的一个人:)我想再待一两天,以防万一有人有令人信服的反对意见,但到目前为止,这似乎是对的正确答案我。

–伊恩·邓恩
2012年7月18日在1:56

较小的更正:将wp-config.php文件移出文档根目录并没有安全上的好处。还有其他好处,与安全性无关,仅适用于不寻常的设置。

–奥托
2012年8月12日15:19

只是为了揭穿可能的神话-这是不可能的,服务器端可能出了一些问题-在这种情况下,php代码显示在屏幕上?

–斯蒂芬·哈里斯(Stephen Harris)
2012年8月12日18:49

@IanDunn但最好的答案是将其完全移出该层次结构,这确实解决了您对日志等问题的担忧。此答案并未回答您的问题标题“正在……真正有益”,它只是说其他安全措施是有好处的,它们可以使您不必担心安全性。每个人都认为自己的房子是安全的,直到他们被盗。之后,他们会做得更好。即使某些人的安全性较低,也永远不会遭到盗窃,但这并不意味着降低安全性是一个好建议。

– AndrewC
2012年12月5日,0:56

这些都是很好的观点,但是我最大的问题是它们是补救性论据,而不是预防性论据。其中大多数谈论这不是什么大不了的事情,因为A)您假设有人正确处理了db用户,B)您有备份。当您使用woocommerce之类的东西或在数据库中存储敏感信息时会发生什么?然后你就被搞砸了。

– Goldentoa11
2014年6月16日18:50



#3 楼

我认为马克斯(Max's)是一个知识渊博的答案,那是故事的一方面。 WordPress Codex有更多建议:


另外,请确保只有您(和Web服务器)可以读取此文件
(通常意味着400或440许可) 。

如果您将服务器与.htaccess一起使用,则可以将其放在该文件中(位于最顶部的
),以拒绝访问该文件的任何人:

<files wp-config.php>
order allow,deny
deny from all
</files>



请注意,在wp-config.php上设置400或440权限可能会阻止插件写入或修改它。例如,一个真正的案例就是缓存插件(W3 Total Cache,WP Super Cache等)。在这种情况下,我将使用600(/home/user目录中文件的默认权限)。

评论


麦克斯就是答案。对他+1。我只是想扩展它。

–its_me
2012年7月13日在16:15

Aahan Krish,您已经靶心了。感谢您的添加。

– Max Yudin
2012年7月13日在16:26



因此,如果您使用htaccess拒绝对wp-config.php的HTTP请求,那么这是否会达到与将其移到文档根目录之外相同的结果,而又不会暴露日志/备份/等?

–伊恩·邓恩
2012年7月13日在17:59

@IanDunn取决于文档的根目录是什么-(1)如果wordpress托管在public_html中的目录中,则将wp-config.php移到该目录之外意味着它将位于public_html目录中。在这种情况下,您将必须使用htaccess规则拒绝对wp-config.php的HTTP请求。 (2)如果将WordPress直接安装在public_html目录下,请向上一层=>,将其移至/ home / user目录。在这种情况下,由于文件位于文档根目录之外,因此非常安全。您仍然可以将文件的权限设置为600(或更严格的440或400)。

–its_me
2012年7月13日在18:10

@IanDunn就像我说的那样,这是我的基本理解,而且我不是安全专家。 :)

–its_me
2012年7月13日18:10



#4 楼

有人要求我们照亮,我会在这里回复。

是的,将wp-config.php与站点的根目录隔离会带来安全益处。

1-如果您的PHP处理程序被破坏或以某种方式修改,则您的数据库信息将不会被公开。是的,在服务器更新期间,我在共享主机上看到了几次这种情况。是的,在此期间该站点将被破坏,但是您的密码将保持不变。

2-最佳做法始终建议将配置文件与数据文件隔离。是的,使用WordPress(或任何Web应用程序)很难做到这一点,但是将其向上移动确实有点孤立。

3-记住PHP-CGI漏洞,任何人都可以通过? -s到文件并查看源。 http://www.kb.cert.org/vuls/id/520827

最后,这些都是小细节,但它们确实有助于最大程度地降低风险。特别是如果您处于共享环境中,那么任何人都可以访问您的数据库(他们只需要一个用户/密码)即可。

但是,不要让小干扰(过早的优化)摆在您面前为确保站点正确安全,确实有必要:

1-始终保持更新状态

2-使用强密码

3-限制访问权限(通过权限)。我们在此处发布了有关此内容的帖子:

http://blog.sucuri.net/2012/08/wordpress-security-cutting-through-the-bs.html

感谢,

评论


大家好,感谢您的补充。我认为我们已经在其他答案及其评论中提到了大多数问题。 1)是的,这是可能的,但很少见; 2)是的,这是有好处的,但是它们是微不足道的; 3)是的,这是可能的,但是这种类型的漏洞不太可能再次发生,并且防范该漏洞就像打打wh鼠,或者使人们在机场脱鞋,因为有些公驴将炸弹藏在了他的炸弹中一次穿鞋。这是反动的,不太可能带来未来的收益。

–伊恩·邓恩
2012年9月12日15:01

在各种讨论中,问题是从“有没有好处?”中提炼出来的。 “好吧,虽然有一些好处,但是超过了风险吗?”我要指的主要风险是必须扩展openbase_dir范围,以便PHP可以访问Web根目录之外的脚本。许多托管设置-包括大量使用Plesk的设置-将日志,备份,应该与Web根隔离的私有FTP区域存储在Web根上方的目录中。因此,授予PHP访问该目录的权限可能是一个严重的漏洞。

–伊恩·邓恩
2012年9月12日15:04



#5 楼

绝对可以。

将wp-config.php移到公共目录外时,当php处理程序被恶意(或不小心!)更改时,可以防止使用浏览器读取它。

读取当几乎没有通过la脚的管理员的故障感染服务器时,可以使用DB登录名/密码。向管理员收取罚款,并获得趋向更好和更可靠的服务器主机。虽然那可能会更贵。

评论


如果攻击者有足够的权限来更改PHP处理程序,那么您已经搞砸了。以我的经验,偶然的更改非常罕见,在这种情况下,更改密码很容易。鉴于上述情况,由于扩展了open_basedir范围,您是否仍然值得冒暴露日志/备份/等风险?

–伊恩·邓恩
2012年7月13日在18:01

我从来没有-rwx访问高于public_html的目录,所以我从不熟悉open_basedir。我的日志位于单独的目录中,因此备份也是如此。我认为这就是所有共享主机所拥有的。

– Max Yudin
2012年7月13日在18:35

寄主千差万别;没有标准的目录结构。 Plesk(共享主机最受欢迎的控制面板之一)将日志放入/var/www/vhosts/example.com/statistics/logs,文档根目录为/var/www/vhosts/example.com/httpdocs。将wp-config.php移至/var/www/vhosts/example.com/wp-config.php将需要授予脚本访问整个example.com目录的权限。

–伊恩·邓恩
2012年7月14日,0:03

出于好奇,您的日志和备份存储在哪里(如果不在域目录中)?是否通过控制面板或其他工具访问它们?

–伊恩·邓恩
2012年7月14日,0:04

是的,通过控制面板。

– Max Yudin
2012年7月14日在7:37

#6 楼

为了便于讨论,我只想澄清一下,移动wp_config.php文件并不一定意味着您只需要将其移动到父目录即可。假设您有一个类似/ root / html的结构,其中html包含WP安装和所有HTML内容。不用将wp_config.php移至/ root,您可以将其移至/ root / secure ...之类,它既位于html目录之外,也不在服务器根目录中。当然,您需要确保php也可以在此安全文件夹中运行。

由于无法将WP配置为在/ root / secure之类的同级文件夹中查找wp_config.php,因此您必须采取其他步骤。我将wp_config.php留在/ root / html中,并剪掉敏感部分(数据库登录名,salt,表前缀)并将其移至名为config.php的单独文件中。然后,将PHP include命令添加到wp_config.php中,如下所示:include('/home/content/path/to/root/secure/config.php');

这实际上是我在设置中所做的。现在,基于以上讨论,我仍在评估是否有必要甚至是一个好主意。但是我只是想补充一点,上面的配置是可能的。它不会公开您的备份和其他根文件,并且只要未使用自己的公共URL设置安全文件夹,就无法浏览。

此外,您可以限制对安全文件夹的访问通过在其中创建.htaccess文件来创建文件夹:

order deny,allow
deny from all
allow from 127.0.0.1


评论


嗨,迈克尔,感谢您的分享。但是,您是否在真实环境中尝试过以验证其正常工作?我认为open_basedir指令需要一棵完整的树,因此,为了从/ root / html访问/ root / secure,必须将open_basedir设置为/ root。

–伊恩·邓恩
2012年10月3日14:52

为了使您的想法可行,我认为您需要设置目录结构,例如/ root / httpdocs / config / accessible,其中httpdocs用于保存日志,备份等。 config保存wp-config.php,可访问保存WordPress和所有内容。您必须修改vhost配置等,才能将文档根目录重新映射为可访问的。但是,在默认设置中,仅拒绝HTTP请求到wp-config不会带来任何好处。

–伊恩·邓恩
2012年10月3日14:53

根据php.net/manual/en/ini.core.php#ini.open-basedir:“在Windows下,用分号分隔目录。在所有其他系统上,用冒号分隔目录。作为Apache模块,来自父目录的open_basedir路径现在会自动继承。”因此,您可以设置多个目录,而无需将它们放在单个树中。

–迈克尔
2012年10月3日19:34



我刚刚测试了一下,看来您是对的。不过,我仍然不确定与仅通过Apache拒绝访问文件相比,这具有什么安全性好处。

–伊恩·邓恩
2012年10月3日在22:05

@IanDunn在亚伦·亚当斯的回答中很好地回应了

– AndrewC
2012年12月5日,下午1:02

#7 楼

有很多不良的书面主题和插件,可以让atatcker注入代码(记住Timthumb的安全性问题)。如果我将成为攻击者,为什么还要搜索wp-config.php?只需插入以下代码即可:

var_dump( DB_NAME, DB_USER, DB_PASSWORD );


您可以尝试隐藏wp-config.php。只要WordPress使所有敏感信息都可以全局访问,隐藏wp-config.php就没有任何好处。

wp-config.php中的不利之处在于它不能保存敏感数据。不好的部分是将敏感数据定义为全局可访问常量。

更新

我想解决define()的问题以及为什么定义敏感数据是一个坏主意数据作为全局常量。

攻击网站的方法有很多。脚本注入只是攻击网站的一种方法。

假设服务器存在一个漏洞,攻击者可以通过该漏洞访问内存转储。
攻击者将在内存转储中找到所有内存的所有值。变量。如果定义了全局可访问常量,则它必须一直保留在内存中,直到脚本结束。
创建变量而不是常量,垃圾回收器很有可能在处理完之后覆盖(或释放)内存。不再需要该变量。

保护敏感数据的一种更好的方法是在使用敏感数据后立即将其删除:

$db_con = new stdClass();
$db_con->db_user = 'username';
$db_con->password = 'password';
$db_con->host = 'localhost';

$db_handler = new Database_Handler( $db_con );

$db_con = null;


使用敏感数据,分配给null将覆盖内存中的数据。攻击者必须在$db_con包含敏感数据时立即获取内存转储。在上面的示例中,这是很短的时间(如果类Database_Handler不保存其副本)。

评论


此答复未直接解决问题。如果任何插件作者说服您安装他们的代码并且有恶意,他们都可以在WordPress上度过美好的一天。这与乐意在系统上安装病毒没有什么不同。这个不移动wp-config.php的参数毫无意义。这就像在汽车上故意安装汽车炸弹,使设置汽车防盗器毫无用处。从技术上讲是真实的,但是WTF?!?

–兰斯·克利夫兰
2012年12月6日下午5:51

不,这不是没有意义的。问题是:我可以通过隐藏wp-config.php来保护数据库帐户。答案很明显:不会。就好像您问“我可以用汽车警报器保护我的汽车免受汽车炸弹袭击吗?”通过隐藏wp-config来保护数据库访问或ftp访问没有其他好处。两者都在全球范围内。我敢肯定,攻击者还有更多方法无需注入代码即可访问全局变量。

– Ralf912
2012年12月6日7:51

我没有在原始问题中看到“可以通过隐藏wp-config.php来保护数据库帐户”。最初的问题是“移动wp-config.php是否有意义”。答案是肯定的,IMO。这就像问外出时是否应该锁上前门。说“任何人都可以轻易打破窗户进入,所以为什么要打扰”并不能回答问题的基本要点。 IMO提出的问题是:“移动wp-config.php是否值得付出额外的努力?这样做有什么好处吗?”。是。至少它可以阻止懒惰的黑客。

–兰斯·克利夫兰
2012-12-10 15:28

最常见的安全最佳实践之一...您错过了非常非常重要的一点:攻击者对什么感兴趣?这不是您如何设置wp-config.php的样式。攻击者对您在wp-config中定义的值感兴趣。用前门抓取您的示例:隐藏wp-config就像您将前门锁定一样,但是将所有未保护的黄金存储在花园中。 wp-config中定义的所有值都是全局定义的。因此,它们都可以在wp-config之外访问。即使您隐藏了wp-config,这些值仍然存在。

– Ralf912
2012年12月11日在11:21

我认为那些主张移动它的人正在尝试防止可能通过HTTP请求以纯文本形式显示wp-config.php的情况,而不是可能使其暴露于主机上运行的其他PHP代码的情况。

–伊恩·邓恩
2012-12-11 22:40

#8 楼

很抱歉撞破一个旧的帖子,但是这不仅是一个显而易见的解决方案。我们知道将wp-config.php文件移出wordpress路由目录有一些安全好处。有些人会认为好处是微不足道的,而其他人则不会。
另一方面,将文件移出默认位置可能会有一些缺点,例如破坏一些没有功能来寻找wp-的插件。在其他位置的config.php文件。
对我来说,最明显的事情是在wordpress路由目录之外创建一个secret-info.php文件,其中包含所有用户名和密码的变量,即
$ userName = “ user”;
$ databasePassword =“ 12345”;
将wp-config.php文件保留在默认的wordpress路由目录中,从wp-config.php中删除用户名和密码值,但保留其他所有内容。然后只需在wp-config.php中要求secret-info.php即可简单地引用$ userName和$ databasePassword变量,即
require('PATH-TO-FILE / secret-info.php');
似乎要做的事情很明显,我在这里错过了什么吗?

评论


为一个老问题添加答案实际上是一件非常好的事情,甚至还有徽章。 WPSE旨在成为知识的储存库,而不是论坛。

–伊恩·邓恩
7月22日4:36

#9 楼

除了安全性优点外,它还允许您将WordPress实例保持在版本控制下,同时将核心WordPress文件保留为子模块/外部。这就是Mark Jaquith设置其WordPress-Skeleton项目的方式。有关详细信息,请参见https://github.com/markjaquith/WordPress-Skeleton#assumptions。

评论


他将其设置在文档根目录中,而不是在其外部,因此与该问题无关。该问题询问的技术指定将wp-config.php移动到vhost文档根目录上方的一个目录,而不只是WordPress安装文件夹上方的一个目录。重点是将其放置在HTTP请求可以读取的文件夹之外。

–伊恩·邓恩
2012年7月17日在22:59