Atualmente uma das melhores formas de segurança existentes para implementação de API's é o oAuth.
O Protheus tem suporte apenas para a versao 1.0 mas essa funciona muito bem.
Nesse modelo de autenticação são passados os dados de acesso do usuário (Login e Senha) entretanto, uma das premissas para utilização do oAuth é justamente que seja uma conexão HTTPS, sendo assim, um ataque do tipo MITM já não seria uma preocupação. Para uma tentativa de força bruta o mais interessante seria implantar uma política de senhas bem feita e além disso, um ataque desses, seria facilmente reconhecido como um DDoS pelo servidor.
A autenticação Basic é extremamente fraca, utiliza a codificação Base64 que sequer é uma criptografia, já que ela pode ser decodificada. Além disso e nesse modelo nao é necessário uma conexao HTTPS, sendo assim, nesse modelo sim é preocupante um MITM. É possivel utilizar a autenticacao basic com HTTPS mas se for pra instalar o certificado SSL, aí já faz o oAuth né!? Rsrs
Qualquer outra forma de realizar uma autenticação realmente segura, será menos eficaz que essas duas na minha opinião. Mas existem alternativas:
- Existe um Header padrão da arquiteruta REST chamado
Referer
você pode utilizá-lo para validar de onde esta vindo a sua requisição.- Falando em origem da requisição, você pode implementar algumas regras de Firewall para aceitar apenas alguns endereços de IP
- Definir uma chave estática (e individual) que você irá disponibilizar para seus clientes, mudando e enviando essas chaves a eles periodicamente. Sempre validar essa chave no início da requisição e cada cliente tendo sua chave específica, caso ocorra alguma falha de seguranca você terá noção onde a mesma aconteceu.
- Para melhorar a solução da chave estática, você pode criar um serviço que retorne uma chave dinâmica e com tempo de expiração, ela deverá ser enviada nas próximas requisições junto a chave estática . (O que é bem proximo ao processo do oAuth, porém sem login e senha)
Links de referência: oAuth no Protheus | REST API's | REST API Security Essentials