2009-07-28 5 views
12

Voglio chiamare "memorizzare una password in un testo in un database" una cattiva pratica ... ma il nostro cliente ha fatto questo nella sua applicazione. Vogliono che rinnovi quell'applicazione.Memorizzazione password in database in testo normale rispetto alle esigenze del cliente

Il mio punto: voglio cambiare questo ... ma poiché non è un bisogno per il nostro cliente non è ancora chiaro.

Come gestisci tali problemi relativi alla sicurezza? Dal mio punto di vista è difficile spiegare tali problemi ai clienti.

+5

non è una cattiva pratica, semplicemente non ha funzionato. chiameresti a consegnare una macchina senza interrompere le cattive pratiche? – markus

+0

e non capisco perché dovrebbe essere difficile spiegarlo a un cliente. Dico solo al mio cliente: c'è un grosso problema con il modo in cui le tue applicazioni memorizzano le password, questo è molto molto molto pericoloso, dobbiamo cambiarlo presto! questo non è un problema da prendere alla leggera, dovremmo provare a spremerlo nell'agenda questa settimana! – markus

+0

Capisco il tuo punto dal punto di vista degli sviluppatori ... ma molti clienti hanno bisogno di idee presentate come "le proprie idee". Voglio che capiscano la necessità di questo senza forzarli. Spero che lo chiarisca un po '... – bastianneu

risposta

7

Scrivete una lettera formale breve, chiara e priva di gergo che dichiari le vostre preoccupazioni e concludendo che nel vostro parere professionale, dovrebbe essere corretto. Rivolgilo a qualcuno ragionevolmente in alto nel cliente.

Se poi decidono di ignorare il tuo consiglio, questa è la loro prerogativa.

(conservare una copia della lettera da soli, anche.)

+0

Questa è davvero una bella idea. – bastianneu

+4

Averlo scritto non è una cattiva idea. Ma vorrei affrontare questo problema telefonicamente o di persona (se possibile) spiegando i pericoli della sicurezza. Se si rifiutano di cambiare il loro punto di vista, puoi sempre dirgli che senti che stai per inviare loro una lettera. – borjab

+0

Grazie per l'aggiunta. – bastianneu

1

Si dovrebbe semplicemente spiegare al cliente che il login non è sicuro se qualcuno con cattive intenzioni ha accesso al database. Se l'applicazione è all'interno dell'azienda, forse non vale la pena cambiarla. Devi analizzare se è davvero un valore e puoi solo conoscerlo parlando con il cliente. Forse i dati non sono molto confidenziali e non è una priorità avere molta sicurezza. Tutto dipende dall'obiettivo del software e da dove si trova il database e da ciò che il cliente desidera che i suoi dati siano protetti.

+0

C'è un punto in cui gli obiettivi del software sono rilevanti. Gli obiettivi cambiano. Forse i dati di oggi non sono molto confidenziali, ma la forza di domani. E forse il database è accessibile solo internamente, ma in seguito sarà esposto esternamente. Il fatto che ci sia un sistema di password mi dice che c'è un minimo bisogno di sicurezza, e mi sembra che l'archiviazione in chiaro non soddisfi questa necessità. Se valesse la pena implementare un sistema di password, vale la pena archiviare le password in modo sicuro. – Imagist

+2

Anche se i dati in quel database non sono particolarmente alti, è probabile che gli utenti stiano riutilizzando le loro password su altri sistemi. – caf

+0

In un mondo perfetto sarei d'accordo al 100% con te caf, ma a volte nel mondo reale il cliente potrebbe non voler investire denaro per risolvere questo tipo di problema. Il cliente ha l'ultima parola ed è per questo che devi parlargli e mostrargli la possibilità di un problema, ma alla fine la scelta potrebbe non essere quella di aggiustarlo se crede che non ne valga la pena. –

3

Non memorizzare mai una password in testo semplice.

mi sento di raccomandare di leggere queste domande:

Se il cliente non è interessato ai dettagli, è sufficiente implementarlo. (Fornire anche una procedura corretta per il recupero della password). Non è davvero un grosso problema per te come programmatore, ma migliora davvero la sicurezza del tuo prodotto nella qualità &.

Se vuole sapere cosa intendi cambiare, spiegaglielo. Parlagli dei problemi di sicurezza e lui capirà. Anche un esempio dal vivo aiuta davvero ad aprire gli occhi dei clienti: basta recuperare la sua password dal vecchio sistema e mostrargli quanto sarebbe facile per tutti.

Ho sempre fatto così: se penso che sia importante avere una funzione di sicurezza in uno dei miei prodotti, l'ho sempre incluso. Aggiunge un grande vantaggio alla qualità dei tuoi prodotti e ti regala molti momenti "woah hai pensato a tutto".

+0

sì, ho già letto quelle domande ... il mio focus su questa domanda era se lo implementavo nel modo migliore, senza corrispondere alle esigenze dei nostri clienti. – bastianneu

+0

@bastianneu: "senza corrispondere alle esigenze dei nostri clienti"? Che cosa? Che bisogno? Un bisogno di pubblicizzare le password? Questo non sembra essere un bisogno razionale. –

+0

non lo chiedono. So che è pericoloso, ma stiamo scrivendo software per i nostri clienti e non per noi. Quindi voglio che abbiano un'idea su di esso. – bastianneu

4

Se possibile, una dimostrazione dal vivo funziona alla grande. Chiedi all'utente di creare un account con una password (non la password che normalmente usano). Vai nel database e recupera, e spiega che chiunque abbia accesso al tuo database (sia per autorizzazione, sia per violazione della sicurezza) può semplicemente andare avanti e farlo.

+1

Non sono sicuro che possano gestirlo. Non voglio che si sentano stupidi riguardo alle recenti Descisions. – bastianneu

+0

Una rapida precauzione; spiegare all'utente cosa stai facendo PRIMA di farlo e ottenere il permesso di farlo. Con l'aiuto di un utente malintenzionato, il miglior cappello bianco può trasformarsi in un cappello nero per gli occhi della legge. – Imagist

+0

@bastianneu: "Non voglio che si sentano stupidi" La decisione è stata stupida. Tuttavia, il modo in cui interpreti questa decisione è un'altra questione. Non devi usare la parola "stupido" anche se è stato stupido. Puoi chiamarlo "discutibile" o "second-best" o "quasi corretto". –

11

penso "cattiva pratica" è un eufemismo. "Irresponsabile" potrebbe essere più preciso.

Se vale la pena proteggerlo con una password, vale la pena farlo correttamente. Memorizzare le password in testo semplice è una violazione della sicurezza imbarazzante in attesa di accadere.

Se "sicurezza" è ovunque nei desideri dei clienti (che suppongo sia, poiché ci sono password), hanno implicitamente chiesto un sistema di sicurezza decente, che include la corretta gestione delle password. Non possono chiedere che "le password siano archiviate in modo sicuro" (hash e salate) perché non sono gli esperti; questo è quello per cui ti hanno assunto.

+0

Hai ragione. Sto ancora lavorando alle mie abilità inglesi – bastianneu

+4

Non abbatterti con le tue abilità di inglese; la tua domanda è molto leggibile. È solo che penso che la "cattiva pratica" sia una specie di parola furba, e la sicurezza delle password è più simile a una legge fondamentale che ogni programmatore dovrebbe conoscere e non interrompere mai. – Rik

+0

non c'è nessuna parte per "sicurezza" nei desideri dei nostri clienti. :-) – bastianneu

0

Da un punto di vista strettamente professionale, devi chiederti se lasciarlo come sarebbe un problema più avanti (hai un contratto di supporto che può essere richiesto in caso di un highjacker che ruba un pass dal DB?)

Personalmente, faccio non pensano che è difficile da spiegare a qualcuno perché memorizzazione passa non criptati è sicuro, tuttavia, come ha sottolineato Daok, si ha realmente bisogno non ti preoccupare passa sistema che non contiene dati magici personali-segreti-segreti.

Al giorno d'oggi sembra così facile utilizzare la crittografia per questo scopo che, a seconda della tecnologia che si sta utilizzando, potrebbe significare solo il minimo sforzo nella codifica e tempo per farlo.

Buongiorno amico!

+0

Bene, il mio punto è che non voglio implementare qualcosa per il nostro cliente che non è richiesto. Parlare di gestione delle password a volte è un problema impegnativo. – bastianneu

+1

D'accordo, anche se vedi che c'è una questione, in qualche modo morale, implicata, nel senso che, dato che si tratta di una violazione della sicurezza, o diciamo semplicemente, una cattiva pratica, come professionista tu * dovresti * far loro sapere . Tuttavia, come hai detto, il tuo cliente potrebbe non volerlo e avere i motivi per non volerlo, nel qual caso potresti semplicemente riposare! –

+0

Grazie per questo commento. – bastianneu

1

Spiegherei che quello che hanno fatto è una cattiva pratica e chiedere loro se vorrebbero che tu cambiasse. Consiglierei di non fare nulla al di fuori del permesso di ciò che ti è stato chiesto di fare senza consultarli.

0

Le dimostrazioni e le spiegazioni sono molto utili, ma quando si dice di "rinnovare" l'applicazione, si sta lavorando dalla documentazione, da una specifica funzionale o tecnica?

Chiedere di essere coinvolto nella finalizzazione di questi documenti e incluso nell'accettazione sarebbe una buona idea.

In definitiva, è è un bisogno per il cliente, semplicemente non ce ne rendiamo ancora conto.

+0

Questo è il punto. Non sanno della sicurezza e penso che non gli importino. Ho una brutta sensazione se mostro loro questa modifica della password. Loro non lo chiedono. Ho intenzione di implementarlo nel modo "migliore pratica", ma dando loro un'idea su questo ... – bastianneu

+0

Loro "non se ne preoccupano" perché sono ignoranti e non è ancora successo nulla che indichi le cose serie. Che non l'abbiano chiesto non è né qui né là. Sei un professionista che dovrebbe offrire loro consigli basati su quello che pensi sia il modo corretto di fare le cose. Se qualcuno ti ha costruito una casa senza isolamento e hanno sottolineato che non l'avevi chiesto, non credo che ne verrai colpito! Tuttavia, apprezzo che possa essere molto difficile far capire alle persone l'importanza delle cose a cui non hanno alcun interesse. Immagino che tu debba SPAVENTARGLI :) – nicodemus13

4

Il motivo migliore per non mantenere mai la password in testo normale è in realtà legale.

Ci sono leggi, come il Data Protection Act nel Regno Unito, che affermano che devono essere fatti sforzi ragionevoli per proteggere i dati sensibili. Memorizzare le password in testo semplice viola chiaramente questo e, a sua volta, potenzialmente nulla l'assicurazione di indennizzo che si ha in caso di violazione della sicurezza. Questo potrebbe lasciarti aperto a una grande causa di responsabilità se non prendi questa semplice misura.

Quando si tratta di uomini d'affari, si deve sempre parlare in termini di tasche, e affermando che un'ora di lavoro per cancellare le password e cambiare l'accesso costerà loro una piccola quantità rispetto al costo potenziale se qualcosa andato male.

Sarebbe inoltre opportuno notare, che se qualcuno ha progettato un sistema fondamentalmente errata come questo, la cappa probabile che vi sia un errore che può esporre dati sensibili come questo è esponenzialmente superiore.

In cima a questo, come altri hanno affermato, una dimostrazione dal vivo è buona. estrai dal database una password di membri del personale casuali e provala con i loro altri sistemi, non dovrai provarne molti prima di entrare.

+0

+1 Punto di intercettazione. Grazie – bastianneu

2

Bastanneu, sai l'espressione inglese "Coprire il vostro un **"? Immaginate questo scenario:

  1. Siete preoccupati che non si preoccupino della sicurezza e non vogliono sentire il vostro messaggio. Diglielo comunque e loro dicono di no a qualsiasi cambiamento.
  2. Vengono violati.
  3. Ti chiedono perché non ha detto nulla prima.

Vi consiglio di rendere le vostre preoccupazioni note in anticipo. E mantieni la prova (lettera firmata, ecc.).

+0

Questo è lo scenario di cui ho paura. – bastianneu

0

Questa è una situazione in cui devi esprimere le cose correttamente. Le password in chiaro non sono qualcosa che si definisce "cattiva pratica". È qualcosa che tu esprimi come rotto, qualcosa che semplicemente non può essere fatto. È necessario rendere il contratto contingente per la correzione della memorizzazione della password, non è facoltativo. Questo non vuol dire che non puoi avere una discussione amichevole sul perché non può essere fatto, ma devi chiarire che non lo farai, non importa quale.

Allora la domanda diventa come si fa a convincere la gente di affari che non è una soluzione valida. Questo dovrebbe anche essere abbastanza facile. Trova i responsabili delle decisioni e portali su una macchina in cui è aperto il browser delle query del database. Digita la query "Seleziona password da credenziali dove username = 'DECISION_MAKERS_USERNAME'", quindi esegui il decision maker (sii educato e non guardi lo schermo mentre lo fanno) Spiega che qualsiasi dipendente con accesso al database sarà in grado di Fai questo. Generalmente penserei che sarebbe il trucco, ma se hai bisogno di fare ulteriori convincenti spiega che una grande parte degli utenti condivide le password attraverso le applicazioni e che qualsiasi dipendente sarebbe in grado di entrare in cose come conti bancari, account di posta elettronica, ecc. esso. Se questo non è ancora abbastanza, spiega esempi di cause legali e multe per le aziende che hanno fatto questo.

Qualunque cosa tu faccia, non spiegare i dettagli tecnici di qualsiasi di esso. Basta mostrare le conseguenze. Non spiegare hash, sali o usare parole come "testo in chiaro". Spiega solo che è ora che le persone possono vedere le password e che sarà facile cambiarle in modo che nessuno possa vedere le password, ma funzionerebbero comunque.

Se non riesci a convincerli, non prendere il cliente. E probabilmente dovresti avvertire gli utenti dell'applicazione che le loro password non sono archiviate in modo sicuro.

Problemi correlati