Qual é o risco?
Em um host compartilhado mal configurado, o PHP de cada cliente será executado como o mesmo usuário (digamos apache
para discussão). Essa configuração é surpreendentemente comum.
Se você estiver em um host e usar o WordPress para instalar o plug-in usando acesso direto a arquivos, todos os seus arquivos pertencerão apache
. Um usuário legítimo no mesmo servidor poderá atacá-lo escrevendo um script PHP que injeta código incorreto nos arquivos de plug-in. Eles enviam o script para o próprio site e solicitam seu URL. Seu código foi comprometido com êxito porque o script é executado como apache
o mesmo que possui os arquivos de plug-in.
O que FS_METHOD 'direct'
tem a ver com isso?
Quando o WordPress precisa instalar arquivos (como um plug-in), ele usa a função get_filesystem_method () para determinar como acessar o sistema de arquivos. Se você não definir, FS_METHOD
ele escolherá um padrão para você, caso contrário, ele usará sua seleção desde que faça sentido.
O comportamento padrão tentará detectar se você está em um ambiente de risco como o que eu descrevi acima e, se achar que você está seguro, usará o 'direct'
método. Nesse caso, o WordPress criará os arquivos diretamente através do PHP, fazendo com que eles pertençam ao apache
usuário (neste exemplo). Caso contrário, ele voltará a um método mais seguro, como solicitar credenciais de SFTP e criar os arquivos como você.
FS_METHOD = 'direct'
pede ao WordPress para ignorar essa detecção de risco e sempre cria arquivos usando o 'direct'
método
Então por que usar FS_METHOD = 'direct'
?
Infelizmente, a lógica do WordPress para detectar um ambiente de risco é falha e produz falsos positivos e falsos negativos. Ops. O teste envolve a criação de um arquivo e a certeza de que ele pertence ao mesmo proprietário que o diretório em que ele vive. O pressuposto é que, se os usuários forem iguais, o PHP será executado como sua própria conta e é seguro instalar plug-ins como essa conta. Se forem diferentes, o WordPress assume que o PHP está sendo executado como uma conta compartilhada e não é seguro instalar plug-ins como essa conta. Infelizmente, essas duas suposições são suposições educadas que freqüentemente estarão erradas.
Você usaria define('FS_METHOD', 'direct' );
em um cenário falso positivo como este: você faz parte de uma equipe confiável, cujos membros todos carregam arquivos por meio de sua própria conta. O PHP é executado como seu próprio usuário separado. O WordPress assumirá que este é um ambiente de risco e não assumirá o 'direct'
modo padrão . Na realidade, ele é compartilhado apenas com usuários em quem você confia e, como tal, o 'direct'
modo é seguro. Nesse caso, você deve define('FS_METHOD', 'direct' );
forçar o WordPress a gravar arquivos diretamente.