Come rendere la sicurezza utilizzabile in un'applicazione web?

7

Sono in fase di pianificazione dello sviluppo di un'applicazione web che voglio rendere più sicura possibile. Sono abbastanza chiaro su come farlo dal punto di vista tecnico, ma c'è un enorme potenziale buco di sicurezza: voglio che il sito abbia utenti.

Come chiunque sia mai stato un utente sa, gli utenti dimenticano i nomi utente, dimenticano le password, a volte dimenticano di avere persino un account con il tuo sito. Gli utenti rispondono alle e-mail di phishing e danno via le loro credenziali. Se fai qualcosa che ritengono troppo complicato, non useranno il tuo sito, deve essere semplice e tutto si svolgerà nel minor numero possibile di clic, ma dobbiamo bilanciarlo rendendolo il più difficile possibile per gli utenti in modo accidentale dare via le loro credenziali e mantenere l'accesso al servizio il più sicuro possibile.

Ciò di cui sono particolarmente interessato sono le strategie che vanno oltre la combinazione di nome utente e password standard e metodi per ripristinare o reimpostare le password che rendono le cose facili agli utenti ma difficili per chiunque cerchi di rubare il loro account. So che molti siti forniscono una domanda di sicurezza aggiuntiva per l'utente, ma poiché non mi fido degli utenti di non creare una domanda stupida come "cos'è 1 + 1", non vedo come questo possa garantire la sicurezza.

Esistono strategie che potrebbero essere utilizzabili per l'utente più incompetente, ma sfidare a un attacco determinato e mirato che mira a penetrare nel loro account? Se no, quali sono le cose più vicine che potremmo ottenere? Come utente quali sono i siti migliori / peggiori per questo che hai incontrato e perché?

    
posta glenatron 13.10.2010 - 12:52
fonte

7 risposte

6

L'unico modo che conosco per creare un sito Web veramente sicuro è richiedere una password e disporre di un dispositivo di risposta / sfida.

Ad esempio, TreasuryDirect.gov ti manda una carta con una griglia di caratteri casuali. Come parte del processo di accesso, viene richiesto di fornire i caratteri contenuti in celle specifiche della griglia. Ma questo è costoso e richiede tempo; richiede di ottenere le carte, di rintracciarle e di inviarle. Inoltre, se una persona perde la carta, non può accedere fino a quando non ottieni una nuova carta. Nel caso di TreasuryDirect, dove potresti gestire milioni di dollari, questo problema ne vale la pena. Solo tu puoi determinare se ne varrà la pena per il tuo sito.

Un'altra opzione è aggiungere un'immagine di convalida, come fanno molte banche. Credo che questa opzione aiuti solo a contrastare alcuni attacchi di phishing, quindi se pensi che il phishing sia un problema, questa potrebbe essere un'opzione.

Credo che le altre alternative, compreso quello che la maggior parte delle banche usano, sembrano essere sicure ma non lo sono davvero. Domande di sicurezza, ad esempio, credo che i siti di compromessi siano più utili di quelli che aiutano. Altri lo pensano anche .

Un'altra cosa sarà incoraggiare gli utenti ad usare una "Passphrase" invece di una password come Jeff Atwood consiglia . Amazon ha adottato questo approccio anche con la sua nuova PayPhrase.

    
risposta data 13.10.2010 - 16:20
fonte
5

Penso che non dovresti reinventare la ruota. La maggior parte dei siti Web dispone di una soluzione che funziona per password dimenticate e che invia un collegamento all'account di posta elettronica dell'utente. L'unico modo in cui il piano va in tilt è se l'account e-mail è stato compromesso.

È ovvio che quanto più importanti sono i dati dell'utente sul tuo sito web, tanto più misure di sicurezza dovresti avere, ma queste misure di sicurezza aggiuntive hanno un impatto sull'usabilità del tuo sito. Quanto sono importanti i dati sul tuo sito? Dovreste avere 2 o 3 sistemi di autenticazione come a volte fare gli e-bank?

L'aspetto più importante è "non fidarti dell'input dell'utente". Se lo fai, la maggior parte dei problemi di sicurezza non esisterà e non ci sarà un impatto sull'usabilità. Se vuoi essere paranoico, vai avanti e costruisci un sistema di sicurezza sofisticato, ma non dimenticare che potrebbe avere un impatto sul modo in cui gli utenti utilizzano il tuo sito (per il peggio). Devi trovare un equilibrio tra queste 2 cose.

    
risposta data 13.10.2010 - 13:10
fonte
1

All'OP: utilizzare approcci standard alla sicurezza sui siti web. Ci saranno inevitabilmente degli utenti idioti che annegheranno e si allontaneranno dal tuo sito sicuro, ma questa è la natura della bestia. Vuoi sicurezza, dovrai sacrificare un po 'di flessibilità (e ancora una volta, ci sono pratiche conosciute sulla sicurezza che hanno funzionato bene da un punto di vista user-friendly.)

Inoltre, quando un utente si allontana, di solito è per cose diverse dalla sicurezza (web design di merda, navigazione confusa, prestazioni scadenti, inaffidabilità, ecc.) La sicurezza invadente è solitamente il risultato di un'architettura scadente e non di sicurezza si. Tienilo a mente.

    
risposta data 13.10.2010 - 13:24
fonte
1

Il mio unico suggerimento sul fronte "usabile ma sicuro" sarebbe quello di avere delle domande, ma le risposte inserite dall'utente (ad esempio, luogo notevole, nome del primo animale domestico, data rilevante). Anche se questi non sono stagni singolarmente, farli rispondere a una combinazione di due o tre domande specifiche della persona dovrebbero essere abbastanza buoni.

E non dimenticare le parole Captcha o simili per rallentare o identificare la forza bruta.

    
risposta data 13.10.2010 - 13:54
fonte
1

Puoi anche utilizzare OpenID e OAuth anziché avere un utente crea un nuovo account

    
risposta data 13.10.2010 - 17:29
fonte
0

A meno che tu non comprenda tutti i casi limite che riguardano in modo sicuro l'autenticazione e le sessioni, non implementarlo tu stesso.

L'autenticazione e la gestione delle sessioni interrotte è uno dei 10 principali problemi di sicurezza di OWASP, e c'è un ragione per quello. "Fare le cose per bene" è così complesso che devi essere un esperto di sicurezza web.

Se possibile, utilizza un sistema di autenticazione di terze parti. Ad esempio, usa account Google. Lascia che si preoccupino di tutto questo.

    
risposta data 13.10.2010 - 16:28
fonte
0

Secondo il tuo commento

I don't trust users not to create a stupid question like "what is 1+1" I don't see how this can guarantee security.

Non è necessario garantire la sicurezza, infatti una domanda del genere non dovrebbe rappresentare un problema. Consenti agli utenti di impostare i suggerimenti di cui hanno bisogno.

Ora per l'ebanking, c'è un obiettivo abbastanza succulento che i phisher realizzano bene, quindi se ti trovi nello stesso spazio puoi guardare quello che alcune banche fanno con molto successo nello spazio anti-phishing - antiphishing.org ha alcune informazioni utili, quindi applicazioni come Rapporti del custode fornisce ulteriore sicurezza attorno alla connessione, e per le aree con valore più elevato usano l'autenticazione a 2 fattori, spesso sotto forma di smart card.

Le soluzioni per diversi livelli di rischio e usabilità sono abbastanza ben comprese, quindi potresti trovare che è più semplice riutilizzare un concetto esistente piuttosto che riqualificarlo: il costo dei test di usabilità potrebbe essere elevato!

    
risposta data 06.12.2010 - 20:26
fonte

Leggi altre domande sui tag