Estou expondo alguns métodos REST em um servidor para um aplicativo móvel.
Gostaria de evitar que os usuários possam farejar como os métodos HTTP são criados (a partir do aplicativo móvel) e enviá-los novamente para o servidor. Exemplo:
- O aplicativo móvel envia uma solicitação
- O usuário usa um proxy e pode verificar o que está acontecendo na rede
- O usuário vê e salva a solicitação que o celular acabou de enviar
- => Agora não quero que o usuário possa enviar manualmente essa solicitação
É suficiente proteger o servidor por HTTPS?
HTTPS significa simplesmente que os dados que estão sendo transportados são criptografados para que somente o cliente e o servidor possam descriptografá-los (em um mundo ideal, sem falar em ataques MITM, etc.).
Como tal, nada no protocolo impedirá a ocorrência de ataques de repetição.
Você precisará criar algum tipo de mecanismo de prevenção de ataques de repetição (algo como tokens expirados ou tokens inválidos após a conclusão do processo) para garantir que seu aplicativo não fique vulnerável a ataques de repetição. Este mecanismo pode ser usado com HTTP normal.
fonte