Stiamo lavorando su una pagina di reindirizzamento per le nostre app mobili.
Gli utenti andrebbero a una pagina come:
https://mobileredirect.our-app.com?target=https://clientdomain.com/some_resource
Le app mobili su iOS e Adroid possono intercettare il dominio "mobileredirect.our-app.com", se installato. Se non installato, il browser si aprirà e reindirizzerà il browser al dominio client.
Questo contiene un problema ovvio. Chiunque può mettere qualsiasi dominio nello schema e questo diventa un vettore di attacco. Mi piacerebbe essere in grado di verificare se l'URL proviene effettivamente da una fonte attendibile. Dobbiamo farlo in questo modo, poiché non controlliamo quali domini potrebbero utilizzare la nostra app mobile.
Idealmente mi piacerebbe farlo nel browser, senza bisogno di un server.
Stavo pensando di usare una libreria come simple-crypt , usando l'operazione Asymmetric. I server attendibili avrebbero la chiave privata, avrebbero crittografato l'URL e finirebbe così:
https://mobileredirect.our-app.com?target=ENCRYPTED_URL.
I client (app mobili e il sito Web) conterranno la chiave pubblica per decrittografare l'URL. Ciò significa che la chiave pubblica sarà visibile a tutti.
Ora la mia domanda: è una buona idea? Come può essere rotto? È eccessivo? Ci sono modi più semplici (ad esempio utilizzare un tipo di algoritmo di checksum)?
Questo è un ripubblicazione da Stack Overflow .