WordPress 生成 temp-write-test-619522e2834d02

编辑于:2022年01月04日

WordPress 生成 temp-write-test-619522e2834d02

最近 WordPress 在 wp-content 生成了很多 类似 temp-write-test-619522e2834d02-78850127 的空文件,应该和宝塔开启网站防篡改插件有关。解决办法:在 wp-config.php 文件,添加 define('FS_METHOD', 'direct');

进阶阅读:了解 define('FS_METHOD', 'direct')

在 wp-config 中把 FS_METHOD 设置为 "direct" 时,我应该有什么安全顾虑?

在一个配置很差的共享主机上,每个客户的PHP都会以同一个用户(为了讨论,我们说是 apache )来执行。这种设置出奇的普遍。

如果你在这样的主机上,并使用 WordPress 使用直接文件访问来安装插件,你所有的插件文件将属于 apache 。同一台服务器上的合法用户将能够通过编写一个 PHP 脚本,将邪恶的代码注入你的插件文件来攻击你。他们把他们的脚本上传到他们自己的网站上,并请求它的URL。你的代码被成功破坏了,因为他们的脚本是以apache的身份运行的,也就是拥有你的插件文件的那个人。

FS_METHOD 'direct' 与此有什么关系?

当 WordPress 需要安装文件时(比如一个插件),它使用 get_filesystem_method() 函数来决定如何访问文件系统。如果你没有定义FS_METHOD,它将为你选择一个默认值,否则它将使用你的选择,只要它有意义。

默认的行为将试图检测你是否处在一个像我上面描述的那样的危险环境中,如果它认为你是安全的,它将使用 "直接 "方法。在这种情况下,WordPress将直接通过 PHP 创建文件,使它们属于 apache 用户(在这个例子中)。否则,它将退回到一个更安全的方法,比如提示你的SFTP凭证,并以你的身份创建文件。

FS_METHOD = 'direct' 要求 WordPress 绕过这种有风险的检测,总是用'直接'方法来创建文件。

那么为什么使用 FS_METHOD = 'direct' 呢?

不幸的是,WordPress 检测危险环境的逻辑是有缺陷的,并且产生假阳性和假阴性。这个测试包括创建一个文件,并确保它与它所在的目录属于同一个所有者。其假设是,如果用户是相同的,那么 PHP 是以你自己的账户运行的,以这个账户安装插件是安全的。如果他们不一样,WordPress 就假定 PHP 是以共享帐户运行的,以这个帐户安装插件是不安全的。不幸的是,这两个假设都是有根据的猜测,经常会出错。

你可以使用 define('FS_METHOD', 'direct' ); 在像这样的假阳性情况下:你是一个可信的团队的一部分,其成员都通过他们自己的帐号上传文件。PHP以它自己的独立用户身份运行。WordPress会认为这是一个有风险的环境,不会默认为'直接'模式。在现实中,它只与你信任的用户共享,因此'direct'模式是安全的。在这种情况下,你应该使用 define('FS_METHOD', 'direct' ); 来强制WordPress 直接写文件。

参考:What security concerns should I have when setting FS_METHOD to "direct" in wp-config?

相关推荐

暂无评论