Actualmente estoy creando un MVP (aplicación móvil financiera) y trato de comprender las mejores maneras de evitar que los clientes malintencionados interactúen con el servidor.
Al observar la seguridad de la mayoría de las aplicaciones móviles, puedo ver que es bastante fácil realizar un ataque MITM en estas para interceptar la comunicación a través de SSL.
Algunas aplicaciones parecen evitarlas con la fijación de certificados, pero eso también es muy fácil de superar en un teléfono con jailbreak.
(Veo que en este hilo ¿Los certificados de cliente proporcionan protección contra ¿MITM? es posible que el servidor verifique el cliente, pero parece que en la práctica prácticamente nadie hace esto? ¿No está seguro de por qué y es posible debido a alguna inflexibilidad al fijar un certificado de cliente en el servidor? )
Puedo ver que un par de las aplicaciones más seguras que he visto, implementan la fijación de certificados en el cliente, el servidor luego envía una clave pública (?) adicional (que puedo ver en el proxy de Charles), por lo que muy probablemente un segundo intercambio de claves público-privadas, pero después de eso ya no puedo seguir las comunicaciones. (Originalmente, esta aplicación, al igual que muchas otras aplicaciones financieras, parece hacer la seguridad fuera de banda a través de sms).
En resumen: 1) ¿Cuáles son las opciones de seguridad adicionales disponibles para proteger mi aplicación que van más allá de la fijación de certificados en el cliente (y evitar que los clientes deshonestos accedan al servidor?) (Excluyendo la prevención de jailbreak).
2) ¿Cómo funciona la seguridad de tipo fuera de banda y cómo proporciona protección adicional?
Gracias