Execute o Apache em uma porta não padrão, como 8574. Essa primeira etapa eliminará 99% do "ruído" esperado de robôs e scripts.
A parte específica da configuração que você deseja no Apache é mod_authz_host . Ele permite filtrar solicitações de acesso com base em vários fatores que o Apache define como "variáveis de ambiente", incluindo o agente do usuário. Você pode permitir do seu agente de usuário personalizado, em seguida, Negar de todos.
CAVEAT: Com tudo isso dito, a filtragem baseada no agente do usuário não é correta para implementar o que você deseja. Controles do lado do servidor são apenas o começo de proteger seu aplicativo contra acesso não autorizado. A autenticação em um serviço da Web (como o que você está desenvolvendo) deve ser implementada usando algum tipo de chave de API. Muitas APIs REST fazem exatamente isso. Se você não tiver certeza de como implementar a criptografia baseada em chave, consulte um especialista (ou enfrente as consequências).
ACOMPANHAMENTO: A implementação de criptografia de chave pública é uma das muitas maneiras de fazer o trabalho corretamente. Antes de você entrar, deixe-me dizer que você está em um mundo de dor. Confira o indispensável " Tudo o que você precisa saber sobre criptografia em 1 hora ." Note que ele diz a frase "consultar um criptógrafo" seis vezes na apresentação. Na sua forma mais simples, seu servidor deve ser capaz de responder às seguintes perguntas afirmativas para qualquer solicitação:
- Posso garantir que essa solicitação veio do aplicativo iOS?
- Posso garantir que esta mensagem não foi adulterada?
- Posso garantir que esse usuário é quem ele diz ser?
- Posso garantir que este usuário está autorizado a fazer o que está pedindo?
Como você pode ver na apresentação, mesmo as APIs conhecidas, como a Amazon, nem sempre acertam isso. Acredito que você precisa de um especialista em sua equipe, pelo menos para que essa parte da sua inscrição seja correta.