Gostaria de começar a usar a API REST do WordPress v2 para consultar informações do meu site. Percebi que, quando visito diretamente um URL de terminal, posso ver todos os dados publicamente. Também vi que muitos tutoriais mencionam o uso de servidores locais ou de teste em vez de sites ativos.
Minhas perguntas são:
- Isso deve ser usado em sites em produção?
- Existe um risco de segurança para permitir que os pontos de extremidade sejam visualizados por alguém, como o
/wp-json/wp/v2/users/
que mostra todos os usuários registrados no site? - É possível permitir que apenas usuários autorizados acessem um terminal?
Quero ter certeza de que estou seguindo as práticas recomendadas em relação à segurança, para que qualquer dica seja útil. Os documentos da API mencionam autenticação, mas não sei como impedir que o URL seja acessado diretamente. Como outras pessoas geralmente configuram esses dados para serem acessados por aplicativos externos sem expor muita informação?
Respostas:
Sim. Muitos sites já o estão usando .
Não. As respostas do servidor não têm nada a ver com segurança, o que você pode fazer com uma tela em branco / acesso somente leitura? Nada!
No entanto, se seus sites permitem senhas fracas, existem alguns problemas . Mas é a política dos seus sites, a API REST não sabe nada sobre isso.
Sim. Você pode fazer isso usando a permissão de retorno de chamada .
Por exemplo:
É difícil responder a essa pergunta porque não sabemos o que / quando é muita informação . Mas todos nós estamos usando referências e folhas de dicas .
fonte
/wp-json/wp/v2/users/
. (Referência wordpress.stackexchange.com/q/252328/41488 @JHoffmann comment)É possível adicionar um retorno de chamada de permissão personalizada ao terminal da API, o que requer autenticação para exibir o conteúdo. Usuários não autorizados receberão uma resposta de erro
"code": "rest_forbidden"
A maneira mais simples de fazer isso é estender o WP_REST_Posts_Controller. Aqui está um exemplo muito simples disso:
Você notará que o retorno de chamada das permissões
function get_items_permissions_check
usacurrent_user_can
para determinar se deve permitir o acesso. Dependendo de como você estiver usando a API, talvez seja necessário aprender mais sobre a autenticação do cliente.Em seguida, você pode registrar seu tipo de postagem personalizado com suporte à API REST adicionando os seguintes argumentos em
register_post_type
Você verá
rest_controller_class
usos emMy_Private_Posts_Controller
vez do controlador padrão.Tenho tido dificuldade em encontrar bons exemplos e explicações para usar a API REST fora da documentação . Eu encontrei essa ótima explicação para estender o controlador padrão e aqui está um guia completo para adicionar pontos de extremidade .
fonte
Aqui está o que eu usei para impedir que todos os usuários não conectados usem a API REST:
fonte
fonte