有什么风险
在配置不当的共享主机上,每个客户的PHP都将作为同一个用户执行(比如
apache
供讨论)。这种设置非常常见。
如果您在这样的主机上,并使用WordPress通过直接文件访问来安装插件,那么您的所有插件文件都将属于apache
. 同一服务器上的合法用户可以通过编写一个PHP脚本来攻击您,该脚本将邪恶代码注入到您的插件文件中。他们将脚本上传到自己的网站并请求其URL。您的代码已成功泄露,因为它们的脚本运行为apache
, 与插件文件的所有者相同。
什么是FS_METHOD \'direct\'
跟这有关系吗
当WordPress需要安装文件(如插件)时,它会使用
get_filesystem_method() 函数确定如何访问文件系统。如果您不定义
FS_METHOD
它将为您选择一个默认值,否则只要有意义,它将使用您的选择。
默认行为将try 要检测您是否处于如上所述的风险环境中,如果它认为您安全,它将使用\'direct\'
方法在这种情况下,WordPress将直接通过PHP创建文件,使它们属于apache
用户(在本例中)。否则,它将返回到一种更安全的方法,例如提示您输入SFTP凭据并在您创建文件时创建文件。
FS_METHOD = \'direct\'
要求WordPress绕过风险检测,并始终使用\'direct\'
方法
那么为什么要使用FS_METHOD = \'direct\'
?不幸的是,WordPress用于检测风险环境的逻辑存在缺陷,并且会产生误报和漏报。哎哟。测试包括创建一个文件,并确保它与所在目录属于同一所有者。假设是,如果用户相同,PHP将作为您自己的帐户运行,并且可以安全地作为该帐户安装插件。如果它们不同,WordPress会假设PHP是作为共享帐户运行的,并且作为该帐户安装插件是不安全的。不幸的是,这两个假设都是有根据的猜测,往往是错误的。
您将使用define(\'FS_METHOD\', \'direct\' );
在像这样的误报场景中:您是受信任团队的一部分,该团队的成员都通过自己的帐户上传文件。PHP作为自己的独立用户运行。WordPress将假定这是一个有风险的环境,不会默认为\'direct\'
模式实际上,它只与您信任的用户共享,因此\'direct\'
模式是安全的。在这种情况下,您应该使用define(\'FS_METHOD\', \'direct\' );
强制WordPress直接写入文件。