🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónEsquemas de URL, enlaces universales y seguridad de transporte
5 tareas · 45 min · Principiante
Una app iOS recibe entradas de fuera por sus enlaces: un esquema propio como mi-app://, que cualquier app o página puede invocar, o un enlace universal, una dirección web normal que el sistema entrega a la app si el dominio lo confirma. Y sale a la red bajo las reglas de la seguridad de transporte de aplicaciones, que por defecto exige HTTPS y que cada app puede relajar con excepciones. Las dos cosas se leen en archivos de configuración. En esta sala se revisan las de Quetzal Cliente: qué ruta hace algo importante sin confirmar, qué dominio declarado no responde como debe y qué excepción de transporte deja hablar en claro.
Objetivo de la sala
Una app iOS recibe entradas de fuera por sus enlaces: un esquema propio como mi-app://, que cualquier app o página puede invocar, o un enlace universal, una dirección web normal que el sistema entrega a la app si el dominio lo confirma. Y sale a la red bajo las reglas de la seguridad de transporte de aplicaciones, que por defecto exige HTTPS y que cada app puede relajar con excepciones. Las dos cosas se leen en archivos de configuración. En esta sala se revisan las de Quetzal Cliente: qué ruta hace algo importante sin confirmar, qué dominio declarado no responde como debe y qué excepción de transporte deja hablar en claro.Un esquema de URL propio, como el que una app declara en su archivo de propiedades, se reserva sin comprobar a quién pertenece: Apple no garantiza que un esquema sea único, y varias apps pueden declarar el mismo. Quien manda un enlace con ese esquema no sabe qué app lo recibe, y la app que lo recibe no sabe quién lo mandó. Por eso lo que llega por un esquema es una entrada no fiable, como cualquier otra.
Un enlace universal es una dirección web normal. Para que el sistema la entregue a la app, el dominio tiene que publicar un archivo de asociación en una ruta conocida, con el identificador del equipo y de la app, y la app tiene que declarar el dominio en sus entitlements. La confirmación viene de quien controla el dominio, no de una reserva abierta.
Responde para continuar
¿Qué diferencia de seguridad hay entre un esquema de URL propio y un enlace universal?
Ver pista de ayuda
Uno depende de quien controla un dominio; el otro, de una reserva que no se comprueba.
Como lo que llega por un esquema es una entrada no fiable, las rutas que hacen algo con consecuencias necesitan sus propias barreras: sesión iniciada, validación de los parámetros y una confirmación del usuario antes de ejecutar. Una ruta que registra un pago, cambia un dato o envía algo con un solo toque en un enlace es un riesgo porque cualquier página, mensaje o app puede construir ese enlace.
El inventario del equipo de desarrollo lista cada ruta con dos columnas: si exige sesión y si pide confirmación. Lee las tres rutas de Quetzal y localiza el esquema cuya ruta ejecuta una operación con dinero sin pedir confirmación.
Responde para continuar
Escribe el esquema de URL cuya ruta registra un pago sin pedir confirmación al usuario.
Ver pista de ayuda
Mira la columna «pide confirmación» y la de «qué hace». El esquema es la parte anterior a los dos puntos de la ruta.
Para que un enlace universal funcione, cada dominio declarado en los entitlements de la app tiene que publicar su archivo de asociación en la ruta conocida de ese dominio, y responder con un 200 y contenido JSON. Un dominio declarado cuyo archivo devuelve un error no funciona como enlace universal: el sistema no confirma la asociación y los enlaces de ese dominio se abren en el navegador, no en la app.
Es un fallo de configuración con una consecuencia de seguridad indirecta: el equipo cree que esos enlaces están protegidos por la verificación de dominio y no lo están. Compara los dominios declarados con la respuesta que da cada uno.
Responde para continuar
Escribe el dominio declarado para enlaces universales cuyo archivo de asociación no se publica.
Ver pista de ayuda
Busca en la respuesta de cada dominio el código de estado que no es un 200.
La seguridad de transporte de aplicaciones exige por defecto HTTPS con TLS 1.2 o superior, cifrado fuerte y confidencialidad hacia adelante. La app puede relajar eso con excepciones por dominio, y las hay de varios tipos: permitir HTTP sin cifrar, rebajar la versión mínima de TLS o desactivarla para toda la app. La más grave es la que permite el canal sin cifrar, porque lo que viaja por él se lee y se modifica en el camino.
El archivo de configuración de Quetzal tiene la desactivación global en falso y una lista de excepciones por dominio. Lee las excepciones y localiza el dominio al que se le permite el canal sin cifrar.
Responde para continuar
Escribe el dominio al que la configuración de transporte le permite conexiones sin cifrar.
Ver pista de ayuda
Entre las excepciones, busca la que permite cargas inseguras por HTTP. La de la versión mínima de TLS es otra cosa.
El resumen de las conexiones de prueba muestra que la app habla con el dominio de la excepción por HTTP y que el número de póliza va en la dirección, así que cualquiera con acceso a la red entre el teléfono y el servidor lo lee. La excepción no es el origen del problema: es el síntoma de un servidor que no ofrece HTTPS.
Cerrar el hallazgo es arreglar el servidor, para que ofrezca HTTPS, y después retirar la excepción para que la app vuelva a exigirlo. Dejar la excepción y pedir al equipo «más cuidado» no reduce el riesgo, y desactivar la protección para toda la app lo agranda.
Responde para continuar
¿Cuál es la mitigación del hallazgo de las conexiones sin cifrar?
Ver pista de ayuda
Una excepción es el síntoma. La causa es un servidor que no habla HTTPS.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.