Domanda:
Come richiedere in modo sicuro le password del cliente come società di consulenza?
Wim Deblauwe
2016-06-23 16:45:55 UTC
view on stackexchange narkive permalink

Nel mio lavoro di sviluppatore, a volte ho bisogno di una combinazione di nome utente / password dal cliente per assicurarmi che le impostazioni sui servizi di terze parti siano corrette per funzionare con il sito web / l'applicazione che stiamo creando. Per esempio. un fornitore di servizi di pagamento che utilizziamo su un sito Web di giochi.

Quale sarebbe il modo migliore per chiedere il nome utente e la password in modo che rimangano protetti? Se invio loro un'e-mail, di sicuro, mi rispediranno semplicemente un'e-mail di testo semplice con la password, ma non è sicuro.

AGGIORNAMENTO:

Vedo che la mia domanda è stata un po 'fraintesa, quindi aggiungerò un esempio:

Supponiamo che io sia uno sviluppatore per CoolSoft, una società di software. Un'altra azienda (chiamiamola Games, Inc.) vuole che creiamo un sito web per loro. Questo sito web utilizzerà servizi di terze parti per il pagamento e l'assistenza clienti con cui dobbiamo integrarci. Games, Inc. crea account con il fornitore di servizi di pagamento e il fornitore di assistenza clienti. Ma non sono totalmente tecnici e dobbiamo avere le loro credenziali per impostare gli URL di callback corretti, ecc. Come possono inviarci la loro password in modo sicuro in modo che possiamo correggere le impostazioni sui loro account (Non ci incontriamo mai di persona)?

Il contatto umano è fuori dall'equazione?
Sì, ho dimenticato di dirlo davvero.
Sebbene la risposta di Philip sembri buona, non è sempre una soluzione possibile, quindi potresti utilizzare un'app crittografata end-to-end come menzionata oleksii.
Ho appena notato una domanda simile: http://superuser.com/questions/21391/how-can-clients-easily-and-securely-send-me-passwords
una volta che conosci i crediti del cliente, cosa impedisce loro di incolparti per qualsiasi problema che si presenti in qualsiasi momento in futuro?Davvero non vuoi quell'informazione
Lavoro con un sito di terze parti come questo in cui hai assolutamente bisogno di queste credenziali per fare sviluppo.Quello che facciamo (poiché questo è sempre un tipo di lavoro iniziale per noi) è usare una password usa e getta durante lo sviluppo.Quindi, come parte della consegna del prodotto, guidiamo il cliente attraverso l'acquisizione delle credenziali e l'impostazione della propria vera password.Ciò elimina i problemi che tutti menzionano riguardo all'essere incolpati per azioni future.
@NeilSmithline Uh, il fatto che abbiano cambiato la password non appena OP ha finito di fare quello che sta facendo, perché seguono una politica di sicurezza ragionevole come persone sane?
Controlla il tuo sito web per l'iniezione SQL.Il tuo codice puzza.
Dovresti essere in grado di aggiungere semplicemente un hook amministratore nel tuo codice.Come un parametro nascosto `? Adminlogin = true` e quindi immettere la password dell'amministratore nell'account dell'utente.L'SQL potrebbe invece verificare la password dell'amministratore.
Mi dispiace, il tuo esempio mi rende le cose poco chiare.Puoi precisare la fine?Perché dovresti avere le credenziali?Perché dovresti "correggere le impostazioni sui loro account"?
Il tuo esempio è troppo astratto.Cosa fa l'azienda Games?E cosa fa il sito CoolSoft?
"Non ci incontriamo mai di persona" Forse dovresti.Mi sembra che ci siano troppi attori in questa commedia.CoolSoft, Games, il provider di pagamento, il provider di assistenza clienti: già 4 attori, sono troppi.Penso che questo sia parte del tuo problema.
Posso avere una risposta al mio suggerimento di `? Adminlogin = true`?
Sono sconcertato dal numero di persone che esprimono sorpresa per questo scenario.Sì, in un mondo ideale, ogni attore sarebbe un abbonato a questo sito e collaborerebbe alla soluzione.Ma la domanda mi sembra perfettamente ragionevole in quanto "data una situazione sfortunata di cui non ho il pieno controllo, come ridurre al minimo i rischi per la sicurezza".
Per un esempio concreto, considera un pannello di controllo DNS.Questi sono completamente sconcertanti per gli utenti non tecnici, ma potrebbe essere necessario accedervi più volte come parte di una distribuzione.In un mondo ideale, il provider DNS consentirebbe di delegare temporaneamente l'accesso a un secondo nome utente, ma nel mondo reale, in qualche modo sarà necessario accedere a quel pannello di controllo.
Otto risposte:
Philipp
2016-06-23 17:05:58 UTC
view on stackexchange narkive permalink

Non lo fai.

Quando insegni agli utenti a fornire il proprio nome utente e password a qualcuno, li insegni a essere vulnerabili al phishing o ad altri attacchi di ingegneria sociale.

Piuttosto, progetta il sistema in modo che un amministratore possa visualizzare e modificare queste impostazioni senza richiedere le credenziali dell'utente.

Quando ti trovi in ​​una situazione in cui hai davvero bisogno di vedere le cose dal punto di vista dell'utente per risolvere un problema, chiedi all'utente di digitare la password per te e poi lascia che ti mostri il problema. Questo può essere fatto di persona o con uno strumento di amministrazione remota.

Quando ti trovi in ​​una situazione in cui il cliente dispone delle credenziali necessarie nella tua applicazione per integrarsi con una soluzione di terze parti, sviluppa la tua applicazione in un modo in cui un utente non tecnico dispone di un'interfaccia utente facile da usare per impostare queste credenziali. Ne avrai comunque bisogno nel caso in cui il cliente abbia bisogno di modificarli e tu non sia disponibile.

L'utente non dovrà inserirlo finché l'applicazione non verrà distribuita sui propri server. Durante lo sviluppo dovresti utilizzare un account di prova da parte tua per interfacciarti con le terze parti. Sicuramente non vuoi causare alcun costo al tuo cliente perché hai eseguito alcuni test sulle interfacce di pagamento di terze parti che non hanno funzionato come previsto.

... quando possibile.Anche negli ambienti moderni, sembra che ci siano sempre account di sistema, account di amministratore del fornitore o altre credenziali che finiscono per essere condivise.
Penso che la mia domanda non fosse chiara.Ho aggiunto un esempio che, si spera, lo renda più chiaro.
@WimDeblauwe la tua domanda era chiara, la risposta corretta è ancora "Non lo fai".Se vuoi testarlo da parte tua, è meglio eseguire il backup dell'hash delle credenziali lì ... modificare la password / chiave API ... test ... quindi ripristinare le credenziali lì.
@schroeder solo perché accade tutto il tempo non significa che sia sicuro o una best practice.
Mi sembra, lo strumento di amministrazione remota sarebbe la strada da percorrere e eviterebbe la necessità di condividere una password.
@CaffeineAddiction Sto dicendo che non è sempre * possibile * ...
L'amministratore di @ben Remote non corrisponde all'esempio nella domanda
@WimDeblauwe ho aggiornato la risposta.La mia conclusione non cambia: non hai bisogno delle password degli utenti e non le vuoi.
@schroeder sicuramente lo fa, a meno che non fraintenda cosa significhi "amministratore remoto".Sto immaginando una sessione di desktop remoto come fa il nostro reparto IT per gli utenti sulla rete aziendale quando hanno bisogno di aiuto per configurare qualcosa.L'utente accede a qualsiasi cosa necessiti di accesso e il supporto guiderà l'utente attraverso la configurazione o semplicemente prenderà il controllo e lo farà per lui.Quindi, al telefono, il supporto può guidare l'utente attraverso la disabilitazione o la disinstallazione di qualsiasi software remoto sia stato utilizzato, se necessario.
@ben ha letto l'aggiornamento di Philipp alla sua risposta su: integrazione di terze parti
Mentre leggo la domanda, si tratta di _diventare amministratore_, per un'azienda che non ha dipendenti propri idonei, come imprenditore.Se il sistema ha un account aziendale e account utente separati che possono essere autorizzati all'account aziendale, va bene.Ma alcuni sistemi hanno solo account aziendali con credenziali e quindi non c'è modo di evitare il passaggio di tali credenziali.
@JanHudec: Vorrei leggere la tua obiezione come "non c'è modo senza incorrere in spese irragionevoli".C'è sempre un modo.Tuttavia, la necessità di entrambe le parti per installare software remoto o formazione del personale o l'aggiunta di un componente di gestione delle credenziali (n originariamente non pianificato) a un sistema può influire sul budget e / o sul tempo.In questi casi, un'organizzazione attenta alla sicurezza dovrebbe almeno essere consapevole di una migliore pratica ed essere in grado di spiegare a se stessa e al cliente quali compromessi stanno facendo e come ridurre al minimo i rischi.
@NeilSlater, c'è una _terza parte_ qui.Pensa a Google Play: ora consentono di concedere autorizzazioni ad altri account, ma all'inizio non lo facevano.Quindi l'appaltatore assunto per gestirlo ha bisogno di accesso e se c'è solo un set di credenziali, beh, l'appaltatore ne ha bisogno.La "spesa irragionevole" è "dimenticarsi del tutto degli affari" qui.Inoltre, non vi è alcuna differenza principale tra un appaltatore e un dipendente: la società deve fidarsi di qualcuno per avere la password principale.
Questo è molto significativo per il nostro settore della sicurezza che la risposta più votata non è una soluzione e in effetti non prende in considerazione molti casi.L'OP non sta chiedendo le migliori pratiche, sta chiedendo un modo per trasferire in modo sicuro le password.
schroeder
2016-06-23 17:02:49 UTC
view on stackexchange narkive permalink

Esistono numerosi "gestori di password per i team" che consentono ai team di condividere, modificare e revocare l'accesso alle credenziali. La maggior parte sono pagati (o gratuiti per piccole squadre), ma questo è probabilmente il modo migliore per farlo. In genere forniscono la crittografia, nonché il controllo degli accessi sull'accesso a credenziali specifiche.

Qualche esempio che puoi dare?
@WimDeblauwe se utilizzi Google "team password manager" hai molto da scegliere
LastPass Enterprise è un esempio.https://lastpass.com/enterprise_overview.php
E 1Password ha anche un affare di squadra basato su cloud.https://1password.com/teams/
[CyberArk PIM] (http://www.cyberark.com/products/privileged-account-security-solution/enterprise-password-vault/) funziona bene per le organizzazioni più grandi.
HopelessN00b
2016-06-23 20:08:16 UTC
view on stackexchange narkive permalink

L'unica opzione praticabile che vedo (che non è stata ancora menzionata, strano) è avere gli account di configurazione del client con le autorizzazioni appropriate per l'utilizzo su questi sistemi / servizi Internet. In questo modo, gestiscono le relazioni con i fornitori e i pagamenti, ma tu disponi di account che dispongono dell'accesso di cui hai bisogno.

Come affermato nella risposta di Phillip, semplicemente non chiedi né partecipi nella condivisione delle password. È solo brutto tutto intorno, perché ti stai mettendo nella posizione di essere incolpato se qualcosa va storto quando qualcun altro usa l'account condiviso. (" So che i miei dipendenti non farebbero mai una cosa del genere e tu sei le uniche persone con cui abbiamo condiviso la password, quindi deve essere qualcosa che hai fatto tu ! ! ")

risposta perfetta, aggiungerei anche la preoccupazione degli SLA da modificare se le password dovessero essere scambiate, non permetterei mai a nessuno di avere alcuna password senza un vincolo legale.E il vantaggio della perdita delle credenziali per il tuo account meno privilegiato correlato al lavoro non sarebbe così dannoso come perdere le credenziali originali (Dio non voglia se accadrà mai).
Concettualmente questa è una buona idea, ma spinge comunque i requisiti al cliente che possono essere difficili da soddisfare.Richiede ancora un certo know-how tecnico sul lato client.
@Ijustpressbuttons la configurazione degli account utente non è generalmente un processo tecnico.Un cliente che ritenga che questo sia un requisito oneroso sarà un incubo.
@HopelessN00b Dipende dal sistema in cui stanno impostando gli account, sicuramente?Alcuni sistemi semplicemente non avranno la capacità di creare accessi aggiuntivi o delegare l'accesso;altri avranno sistemi complessi di autorizzazioni che richiedono la navigazione.Come tante delle risposte qui, questo sembra dipendere dalla capacità di influenzare i protocolli di sicurezza di terze parti per schivare la domanda.Nella migliore delle ipotesi, potrebbe andare su un elenco di "esaurire queste possibilità prima di procedere".
@IMSoP Ci sono un sacco di cazzate là fuori, certo, un servizio "cloud" / web / qualunque (servizio di terze parti che si integra con un sito web) su cui è difficile impostare nuovi utenti / account è un tipo speciale di schifezza.È come fumare e pompare benzina allo stesso tempo.Sì, di solito puoi trovare un modo per farlo funzionare, ma * davvero * non dovresti farlo.Se i tuoi venditori sono così cattivi, corri.
@HopelessN00b Sono fortemente in disaccordo.Il modello di autorizzazione predefinito per la maggior parte dei sistemi prevede la registrazione di un account e tale account "possiede" tutto ciò che contiene.La possibilità di creare account secondari o delegare l'accesso alla configurazione a un altro account è piuttosto rara.Se rifiutassi ogni contratto in cui qualcuno ha scelto un venditore tutt'altro che perfetto, ti faresti licenziare.
Falco
2016-06-24 13:59:42 UTC
view on stackexchange narkive permalink

Riassumo la situazione come segue

  • hai bisogno di accedere a un servizio di terze parti con l'account del tuo cliente
  • non è facile raggiungere un incontro di persona
  • una soluzione che coinvolga il client che installa software o segue una procedura complessa non è desiderabile

Penso che la soluzione migliore sarebbe: Invia LORO una nuova password

Tu inviare loro una password in modo sicuro e fornire loro istruzioni (tramite telefono?) per impostare temporaneamente la password sui loro account con la password proposta. - Quindi puoi usarlo per accedere alla pagina. E quando hai finito, possono reimpostare la password al valore originale.

Un modo semplice sarebbe un collegamento una tantum nella posta, che porta a una pagina che mostra la password. Il cliente può fare clic su di esso, copiare la password. E un utente malintenzionato non sarà in grado di accedere allo stesso collegamento alla password. (Ovviamente un attacco MitM mirato con la modifica del contenuto della posta sarebbe ancora possibile e potrebbe essere mitigato firmando la posta)

Potresti anche dire loro la password temporanea tramite telefono, la annotano e cambiano la loro password dell'account temporaneamente a quella che gli dici.

Questo modo all'indietro ha diversi vantaggi:

  • Il tuo cliente può rispettare la regola "Non condividere mai la tua password"
  • Puoi scegliere un modo sicuro per trasmettere la password, non devi insegnare al tuo cliente un modo sicuro.
  • Il tuo cliente ha il controllo di dare e revocare il tuo accesso
HashHazard
2016-06-23 17:02:31 UTC
view on stackexchange narkive permalink

Esistono letteralmente tantissime soluzioni per la trasmissione di dati (ad es. credenziali) in modo sicuro.

  • Se il client supporta la crittografia PGP / GPG, puoi scambiare chiavi pubbliche e crittografare le email
  • Ci sono anche aziende specializzate in SecureMail (ZixCorp) oppure puoi acquistare il tuo (Cisco Ironport).
  • Se si dispone di un sito di collaborazione (ad esempio, portale clienti per il cliente) possono caricare le credenziali sul portale. FYI Alfresco è un'applicazione freeware che fa un buon lavoro in questo senso.
  • Anche se il contatto umano è fuori questione, sei in grado di inviare messaggi? Forse possono inviare un messaggio di testo della password e fornire il nome utente tramite un altro canale.
  • Se tutto il resto fallisce, i segnali di fumo e la posta ordinaria sono ancora una cosa, ma i metodi sopra sono i vettori più comuni.
Il testo non è sicuro a meno che non lo fai tramite un'app come Signal
@rhymsy esattamente perché ho detto di inviare solo la password.Un testo con caratteri confusi (e di solito tramite un'immagine MMS invece di caratteri reali) senza contesto circostante non fa bene all'intercettore.
@rhymsy - Questo non è chiaro.Possiamo inviare SMS tramite l'app Signal?
@Hollowproc - Se l'interceptor desidera intercettare la password, un testo di caratteri privi di significato è perfettamente significativo per l'interceptor.Per le password preferisco la regola ** “Non scriverla mai” **, e consiglio piuttosto il telefono.Possiamo persino essere paranoici e suddividere la comunicazione in più telefonate.Da / a telefoni diversi, da / a persone diverse ...
@NicolasBarbulesco come ha detto OP, il telefono non è un'opzione in questo scenario.La soluzione "Segnale" implica anche che ti affidi a una terza parte il contenuto del messaggio SMS / MMS che stanno "crittografando";un semplice messaggio di testo senza contesto dovrebbe essere sufficiente, poiché intercettarli è più difficile di quanto si possa pensare e richiede pezzi aggiuntivi e un livello di compromesso già esistente che probabilmente renderebbe banale ottenere questa password con altri mezzi.Certo, niente è perfetto ma è un rischio calcolato.In questo caso, il rischio è presente, ma basso, IMHO.
@Hollowproc - Perché il telefono non dovrebbe essere un'opzione?Sarebbe strano.
@NicolasBarbulesco batte il FOM, ma questo è ciò che ha detto l'OP nei commenti sotto la domanda: Il contatto umano è fuori dall'equazione?- MadWard 23 giugno alle 11:49 Sì, ho dimenticato di dirlo davvero.- Wim Deblauwe 23 giugno alle 11:50
@Hollowproc - Cos'è il FOM?
Fanculo a me .. LOL
@Hollowproc - Ho inteso quel "contatto umano" come incontro umano.Il telefono è molto comune negli affari aziendali.Se il telefono non può davvero essere utilizzato, allora questo è un problema che dovrebbe essere risolto o evitato fuggendo da quel progetto da incubo.
@NicolasBarbulesco, Ho anche le mie opinioni sui dettagli circostanti della domanda (quindi +1), ma ho cercato di rimanere neutrale e ho indicato la domanda posta.
Bill
2016-06-23 20:19:16 UTC
view on stackexchange narkive permalink

Sii semplice, ma utilizza solo due forme di comunicazione. Ad esempio, in un'e-mail che richiede le credenziali, chiedi loro di rispondere solo con il nome utente e quindi invia una password temporanea al tuo numero. Appena possibile dopo aver ottenuto le credenziali, cambia la password temporanea con qualcos'altro.

Sì, in teoria, qualcuno potrebbe vedere l'email e hackerare SS7 per ottenere la password, ma se può farlo prima che tu possa cambiare la password temporanea, sei comunque pwnato.

Non capisco il tuo ultimo paragrafo.Forse dovresti riscriverlo.Cos'è SS7?
@NicolasBarbulesco: google first hit = https://en.wikipedia.org/wiki/Signalling_System_No._7 è un protocollo non molto sicuro utilizzato nei sistemi telefonici, compresi i sistemi cellulari / mobili che gestiscono i messaggi di testo.Quindi, hackera SS7 (sistemi) per ottenere il testo (contenente la password).
sidewaiise
2016-06-25 06:54:59 UTC
view on stackexchange narkive permalink

Non dovresti essere programmato come callback per rispondere a nome utente / password specifici. Se hai a che fare con strumenti di terze parti, dovresti configurare tali account per loro e interagire con tali strumenti tramite token API. Molto meglio che crei l'account e alla fine assegni le credenziali dell'account al cliente.

L'OP non mira a memorizzare il nome utente e la password da nessuna parte;mirano ad accedere personalmente per configurare i dettagli tecnici in alcuni pannelli di controllo di terze parti come parte della distribuzione di un'applicazione.E la creazione di nuovi account non è sempre un'opzione, in quanto potrebbero essere account esistenti a pagamento che richiedono l'aggiunta di nuove funzionalità.
bortzmeyer
2016-06-27 00:18:22 UTC
view on stackexchange narkive permalink

Strano che nessuno abbia menzionato OAuth, che, a prima vista, è la soluzione perfetta per il problema, come riformulato dopo l'aggiornamento.

OAuth è una soluzione che dovrebbe essere implementata dal fornitore di sistemi di terze parti;l'OP non sta cercando l'accesso a un sistema progettato da loro stessi.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...