Solicitações Remotas com wp_safe_remote_get
Ontem, compartilhei um post de como usar wp_remote_get
, mas deixei de fora uma função alternativa: wp_safe_remote_get
. O objetivo original era usar o primeiro post para mostrar:
- O que a função original aceita,
- Como usar a função original,
- O que a função original retorna,
- Como uma implementação se parece.
E então eu ia dar uma olhada wp_safe_remote_get
. Mas há um desafio: tenho amigos inteligentes. Pouco depois de publicar o post, recebo uma resposta de Roy :
Obrigado, Ruy! (Certifique-se de dizer "Oi!" para ele. 🙂
Mas falando sério, a continuação do post de ontem é exatamente isso: wp_safe_remote_get
. E é como determinar a diferença nas duas funções e quando você usaria uma sobre a outra.
wp_safe_remote_get
Direto dos documentos da API, aprendemos :
Essa função é ideal quando a solicitação HTTP está sendo feita para uma URL arbitrária. A URL é validada para evitar redirecionamentos e solicitações de ataques de falsificação.
E semelhante ao seu homólogo, ele aceita uma URL e uma série de argumentos que podem especificar como a solicitação é feita.
Além disso, assim como wp_remote_get
, ele também retorna uma matriz dos dados de resposta ou uma instância de WP_Error
se a solicitação falhar.
Usar esta função não é diferente de usar a anterior, mas levanta a questão:
Quando usamos um sobre o outro? Mais especificamente, quando usamos wp_remote_get
versus wp_safe_remote_get
?
Leia a fonte
Quando você se depara com uma situação como essa, a primeira coisa a fazer é ler a fonte:
Se você ler os links acima, notará que o último rejeita os “URLs inseguros" que são determinados por wp_http_validate_url através de uma série de verificações avançadas.
Mas ainda assim, qual eu uso?
Isso ainda deixa a pergunta sem resposta, não é? Eu acho que é fácil fazer a declaração geral de que você deve sempre usar wp_safe_remote_get (ou wp_safe_remote_post, para esse assunto).
Todos os projetos são diferentes, no entanto.
Por exemplo, se você estiver trabalhando em um plug-in que será usado apenas em uma intranet e tiver controle sobre, digamos, uma lista de permissões de URL que pode ser passada para a função, não há problema em usar o primeiro.
Se, no entanto, você estiver expondo o último aos usuários, sempre use a versão segura da função.
Resumidamente
Minha regra geral é esta (e é semelhante à higienização):
Se os usuários forem interagir com a função, verifique se eles estão interagindo com a versão mais segura possível do código.
Caso contrário, muito está em risco.