Contesto:
Ho due server Web ServerA (stack LAMP) e ServerB (stack ASP.NET). Penso che la tecnologia (si spera) non abbia importanza. Entrambi i server richiedono l'autenticazione e presumibilmente fanno bene il loro lavoro, se non è fuori ambito in questa domanda.
Task:
Vorrei implementare una pagina con contenuti iframe. ServerA serve il contenuto esterno ServerB serve il contenuto interno (l'iframe). I server si trovano nel dominio diverso . Quando l'utente X accede a ServerA e naviga verso la pagina, mi piacerebbe mostrare un contenuto personale e sensibile proveniente da ServerB nell'iframe. Il contenuto appartiene all'identità dell'utente X nel server B.
Soluzione proposta:
- ServerA e ServerB hanno un segreto condiviso (lato server)
- Gli utenti vengono replicati da ServerA a ServerB. I nomi utente corrispondono, le password su ServerB sono generate casualmente e non vengono utilizzate affatto. (continua a leggere)
- ServerA autentica l'utente tramite https utilizzando un'autenticazione basata su modulo
- La pagina esterna contiene il seguente frode html in cui l'estensione .any nell'url è configurata per eseguire e rispondere nel server, ad esempio .aspx o .cshtml o .php, ecc .:
.
<img src="https://serverb.com/dummy.any?parameter=crypted_username_and_date_using_thesecret" style="display:none;" />
-
In ServerB quando una richiesta viene ricevuta sul dummy.any url decrittografa il parametro, qualche controllo poi nella risposta imposta un cookie criptato contenente con il nome utente. La chiave di criptazione potrebbe essere il segreto condiviso o meglio può essere il segreto privato di ServerB.
-
In ServerB quando una richiesta ricevuta nella pagina interna (l'iframe) deve contenere il cookie, cosa è stato impostato per questo stesso dominio ( link ) se il cookie è presente e l'utenteX è esistente e dice 5 minuti che il timeframe è tutto OK, ServerB utilizza il suo sottosistema di autenticazione per accedere all'utente a livello di programmazione (nessuna password fornita). (il sottosistema di autenticazione imposta i propri cookie o qualsiasi altra cosa, questa si spera scatola nera nel nostro punto di vista)
- Dopo questo ServerB viene pubblicato un contenuto sensibile che appartiene a userX.
Si noti che sono uno sviluppatore e non un esperto di sicurezza. Ecco perché ti sto chiedendo prima di implementare un buco di sicurezza.