No me importa mucho piratear, etcétera, pero quiero asegurarme de que el backend (basado en Rails) no esté abierto a servicios automáticos que lo puedan hacer en DOS, etc. Por lo tanto, me gustaría simplemente asegurarme de que todo acceso a el backend (que serán algunas consultas REST para los datos GET y PUT) se realizará a través de una aplicación de iPhone válida, y no de una secuencia de comandos ejecutándose en una máquina.Aplicación para iPhone con un servidor backend: ¿cómo garantizar que todo el acceso sea solo desde la aplicación iPhone?
Quiero evitar el uso de cuentas para que la experiencia del usuario sea perfecta.
Mi primera intención es unir el UDID y un secreto, y proporcionar ese (y el UDID) a través de una conexión HTTPS al servidor. Esto permitirá que se cree una sesión autenticada o devuelve un error.
Si se escucha a escondidas, un atacante podría tomar el hash y volver a reproducirlo, dejando este esquema abierto para reproducir los ataques. Sin embargo, ¿no debería la conexión HTTPS protegerme contra escuchas ilegales?
Gracias!
Creo que esta es probablemente la forma en que voy a ir. No había considerado copiar la marca de tiempo (o al menos la fecha actual) también, y me gusta la forma en que evitará los ataques de repetición. Puede haber algunos pequeños contratiempos con un hash no coincidente si alguien envía una solicitud medio segundo antes de la medianoche, y el servidor elige el día siguiente para tomar el valor de la fecha para el hash, pero siempre y cuando compruebe las fechas de cada lado debe ser bueno. Creo que esto representa una buena combinación de opciones. Obtendré un certificado SSL para que no pueda ser escuchado a escondidas, y usar un hash con tiempo y secreto para los datos. Gracias! – Nex