Che cosa dobbiamo tenere a mente quando apriamo i nostri dati a terzi?

1

Abbiamo un database con immagini (tra le altre cose). Abbiamo alcune app che possono connettersi a questo database tramite un servizio web php (invia richieste https a un file php per recuperare materiale dal db e scrivere nuove cose sul db).

Ora una terza parte vuole collaborare con noi. Hanno il loro portale web dove i loro utenti devono accedere. I loro utenti possono vedere alcuni dati di base, e l'idea è che i loro utenti che sono anche i nostri utenti possano vedere le immagini dal nostro database dal loro portale.

Non daremo a questa terza parte l'accesso al nostro database, ma vogliamo esporre le immagini, dato che l'utente è loggato. Quindi abbiamo fatto un brainstorming un po 'e siamo giunti alla conclusione che in qualsiasi modo lo farò, sarà un enorme potenziale problema di sicurezza se non lo facciamo perfetto.

Abbiamo pensato di creare un altro database e di sincronizzarlo ogni ora circa con il nostro database live. Quindi vogliamo creare un altro servizio web, in modo che la terza parte possa accedere ai dati in questo secondo database. Ma ora non c'è ancora modo per noi di assicurarsi che l'utente abbia effettivamente effettuato l'accesso, non abbiamo accesso al database di terze parti, quindi non possiamo verificarlo.

Qualcuno può spiegare cosa dobbiamo tenere a mente per un progetto come questo? Abbiamo saltato qualcosa? È persino possibile farlo al sicuro al 100%?

    
posta Kevin 19.12.2014 - 16:04
fonte

2 risposte

2

Esiste un framework che esiste specificamente per abilitare questo tipo di scenario. Si chiama OAuth 2.0 . Quello che vuoi fare è avere un'API che esponga le risorse dei proprietari di risorse (i tuoi utenti) (le loro immagini) per il cliente (le terze parti) da consumare con il permesso dei singoli proprietari di risorse.

Quindi, in questo modello, diventi un fornitore OAuth 2.0 e la terza parte implementa un client OAuth. Quindi, gli utenti che sono utenti di entrambi i server possono autorizzare il client ad accedere alle loro immagini e alla terza parte verrà assegnato un token di accesso che consentirà loro di recuperare le immagini dalla propria API per gli utenti che hanno concesso loro detto accesso.

Non so se il secondo database serve a qualsiasi scopo. Dato che hai intenzione di esporre l'accesso tramite un servizio piuttosto che garantire l'accesso diretto al database in ogni caso, la seconda copia del database mi sembra semplicemente una complessità aggiuntiva non necessaria.

    
risposta data 19.12.2014 - 17:08
fonte
1

Prima di tutto: hai già controllato con il tuo ufficio legale o un avvocato qualificato se ti è stato permesso di farlo in base alla tua politica sulla privacy e alle leggi locali sulla privacy? Quando non lo fai, devi farlo prima.

Il principale problema di sicurezza è scoprire quali loro utenti sono anche i tuoi utenti. Non è così facile come sembra, perché "Kevin" su SiteA e "Kevin" su SiteB potrebbero essere persone completamente diverse. Potresti provare a confrontare le altre informazioni personali tra loro, ma questo è 1. inaffidabile e 2. sarebbe piuttosto una violazione della privacy.

Quando gli utenti acquisiscono le immagini da un javascript lato client tramite un servizio web che gira sul tuo dominio, puoi riconoscerle tramite i loro cookie di accesso. Ma funziona solo in un contesto completamente client-side. Quando il loro server deve interrogare le immagini, questo non funzionerà.

Un'alternativa sarebbe consentire agli utenti sul loro sito Web di collegare manualmente i loro account a quelli sul tuo sito web. Quando gli utenti si trovano su SiteA, fanno clic su "Consenti a SitoA di importare le mie immagini da SiteB" ¹. Quando lo fanno, SiteA si collega a SiteB per richiedere un token una tantum per quell'utente. Quindi l'utente ottiene un collegamento con quel token che li invia a SiteB. Quando cliccano su quel collegamento devono accedere (quando non hanno ancora un cookie di accesso) e ricevere un messaggio "Vuoi condividere le tue immagini con il tuo account NAME sul SitoA?" ¹ Quando confermano, hai entrambi hanno stabilito un collegamento tra i due account e hanno anche ottenuto il consenso degli utenti a condividere le immagini. Ora puoi consentire a SiteA di richiedere qualsiasi immagine per quell'utente.

¹) Controlla il testo esatto di queste istruzioni con il tuo dipartimento legale / avvocato per assicurarti di ottenere che tutti gli utenti acconsentono di cui hai bisogno secondo le leggi e i regolamenti locali. La legge sul copyright è anche un problema in questo caso perché copi il contenuto generato dall'utente a una terza parte.

    
risposta data 19.12.2014 - 16:23
fonte

Leggi altre domande sui tag