Estamos trabajando en una página de redireccionamiento para nuestras aplicaciones móviles.
Los usuarios irían a una página como:
https://mobileredirect.our-app.com?target=https://clientdomain.com/some_resource
Las aplicaciones móviles en iOS y Adroid pueden interceptar el dominio "mobileredirect.our-app.com", cuando se instalan. Si no está instalado, el navegador se abrirá y redirigirá el navegador al dominio del cliente.
Esto contiene un problema obvio. Cualquiera puede poner cualquier dominio en el esquema y esto se convierte en un vector de ataque. Me gustaría poder verificar si la URL proviene realmente de una fuente confiable. Debemos hacerlo de esta manera, ya que no controlamos qué dominios podrían usar nuestra aplicación móvil.
Idealmente, me gustaría hacer esto en el navegador, sin la necesidad de un servidor.
Estaba pensando en usar una biblioteca como simple-crypt , usando la operación Asymmetric. Los servidores de confianza tendrían la clave privada, cifrarían la URL y terminaría así:
https://mobileredirect.our-app.com?target=ENCRYPTED_URL.
Los clientes (aplicaciones móviles y el sitio web) contendrían la clave pública para descifrar la URL. Esto significa que la clave pública será visible para todos.
Ahora mi pregunta: ¿Es esta una buena idea? ¿Cómo se puede romper esto? ¿Es una exageración? ¿Hay formas más fáciles (por ejemplo, usar algún tipo de algoritmo de suma de comprobación)?
Este es un reenvío desde desbordamiento de pila .