Impedire agli utenti registrati di condividere password [chiuso]

5

Di seguito è una proposta per affrontare una situazione di sicurezza del sito web. Mi chiedo se sia fattibile, sia dal punto di vista tecnico che di usabilità. Voglio assicurarmi che la proposta contenga errori evidenti.

  1. Il sito web

Il sito web in questione è un sito web scolastico in cui gli studenti possono acquistare vari oggetti. Questi studenti ottengono un account sul sito Web con un nome utente e una password, che possono utilizzare per accedere. Una volta effettuato il login, hanno accesso a pagine protette con contenuti privati che non sono disponibili per il pubblico in generale.

  1. La preoccupazione per la sicurezza

I proprietari del sito Web desiderano evitare una situazione in cui un singolo studente si iscrive sul sito Web, ottiene un nome utente e una password e quindi fa circolare tali credenziali in una cerchia di amici che sono quindi in grado di accedere al sito Web e illegalmente visualizza il contenuto privato.

  1. La soluzione

L'idea centrale che abbiamo elaborato per risolvere questo problema di sicurezza è consentire a ogni studente di accedere al sito Web solo su due dispositivi. Una volta che uno studente accede a due dispositivi diversi, questi sono limitati a questi due dispositivi. Se poi tentano di accedere a un terzo dispositivo, il sistema semplicemente non consente loro di farlo. Siamo a conoscenza del fatto che altri siti Web che offrono contenuti privati, come Netflix, utilizzano tale approccio.

  1. Attuazione

Due idee vengono in mente per implementare la suddetta misura di sicurezza: indirizzo IP e cookie. Escludiamo gli indirizzi IP che possono cambiare e scegliere i cookie. Siti web come amazon.com consentono ai loro clienti di effettuare il login una volta, e quindi ogni volta che ritornano al sito Web, vengono sempre riconosciuti. Questo è quasi certamente raggiunto attraverso i cookie.

Quindi ogni volta che uno studente si connette, memorizzeremo sul suo dispositivo un cookie. E conserveremo anche questo cookie nel nostro database sotto l'account di quell'alunno. Pertanto, ogni volta che uno studente accede a qualsiasi dispositivo, controlleremo se il dispositivo su cui stanno attualmente effettuando l'accesso contiene il cookie che abbiamo memorizzato per quello studente. In caso contrario, sapremo che lo studente sta effettuando l'accesso su un altro dispositivo. Saremo quindi in grado di sapere quanti dispositivi lo studente sta tentando di accedere.

  1. Inconvenienti

Abbiamo identificato almeno tre possibili inconvenienti a questo approccio:

  • Cancellazione dei cookie. Le persone possono, per una serie di motivi, scegliere di cancellare i cookie dal proprio computer.
  • Una persona in buona fede potrebbe occasionalmente non avere accesso al proprio dispositivo abituale e desidera accedere su un altro computer.
  • Le persone acquistano nuovi dispositivi di volta in volta.
  • Questi sono esempi di situazioni in cui un utente in buona fede, per motivi legittimi, desidera effettuare il login, ma non sarà in grado di farlo, a causa della limitazione della sicurezza del sito web di due dispositivi.

Abbiamo alcune idee su come costruire la logica nel sistema per gestire tali situazioni, che potremmo implementare in futuro, ma per il momento riteniamo che tali situazioni siano sufficientemente rare che non abbiamo bisogno di gestiscili a livello di codice.

Piuttosto, per ora, nel caso in cui uno studente è bloccato, otterrà una schermata con un messaggio che spiega perché non li abbiamo autorizzati nel sistema, e un pulsante su cui possono fare clic su che genererà automaticamente un email agli amministratori del sito.

L'email informerà che uno studente desidera accedere a un terzo dispositivo. Gli amministratori possono quindi contattare lo studente e, se sono soddisfatti che la necessità sia in buona fede, saranno in grado di prendere provvedimenti dal CMS per consentire a quello studente di entrare.

La dimensione del corpo studentesco è sufficientemente gestibile che l'approccio sopra dovrebbe essere fattibile.

  1. Avviso equivoco

Informeremo gli studenti di queste misure di sicurezza quando il loro account è attivato per evitare spiacevoli sorprese.

    
posta oyvey 16.11.2015 - 09:09
fonte

15 risposte

53

Quello che stai cercando di fare è futile. Le informazioni non possono essere contenute. Non puoi impedire a qualcuno di trasmettere informazioni. Quando non possono condividere i loro accessi, copia e incolla il testo. Quando disabiliti la copia e incolla (i metodi comuni per farlo possono essere facilmente aggirati, a proposito), faranno degli screenshot. Quando trovi un modo per rendere impossibili gli screenshot (non me ne viene in mente nessuno), lo leggeranno l'un l'altro. Tutto ciò che otterrai sarà compromettere l'esperienza dell'utente per gli utenti legittimi senza impedire realmente l'abuso.

Ma quando si vuole davvero seguire questa strada, si potrebbero considerare metodi alternativi di rilevamento del browser rispetto all'indirizzo IP e ai cookie. Vi sono molte altre informazioni che un browser Web trasmette su ogni richiesta di pagina e spesso è sufficientemente unico per identificare un utente. La Electronic Frontier Foundation ha una demo interessante con il loro Panopticlick sito web.

Tra le tecniche utilizzate ci sono:

  • Stringa UserAgent (autoidentificazione del browser)
  • Intestazioni HTTP_ACCEPT
  • Plugin installati e relativi numeri di versione
  • Caratteri installati
  • Fuso orario
  • Dimensione dello schermo e profondità del colore
  • Tecniche cookie alternative (localstorage, archiviazione persistente in plug-in come Flash)

Ricorda che tutti questi metodi di identificazione sono inclini a falsi negativi perché molti di essi possono cambiare in qualsiasi momento. Si dovrebbe prendere in considerazione un'impronta digitale solo quando si entra da un nuovo dispositivo quando più proprietà cambiano drasticamente simultaneamente. Quando la differenza rispetto al precedente profilo del dispositivo è minore, dovresti invece aggiornare silenziosamente l'impronta digitale del dispositivo.

    
risposta data 16.11.2015 - 11:08
fonte
36

Oltre alle risposte esistenti, voglio solo sottolineare che i cookie non sono pensati per essere uno storage affidabile e persistente. Possono essere cancellati in molte occasioni senza chiedere il consenso dell'utente, ad esempio dopo un arresto del browser , un aggiornamento, la corruzione del profilo, lo chiami.

Non puoi semplicemente emettere un equo avvertimento ai tuoi utenti e aspettarti che conservino i cookie. Semplicemente non è sotto il loro controllo.

Ciò che potrebbe davvero impedire agli utenti di condividere le loro credenziali è la possibilità di abusi (ad esempio non ti darò mai la mia password SO, non necessariamente perché i termini e le condizioni lo dicono, ma perché sarai in grado di abusare impersonandomi ). Controlla se gli studenti hanno già un qualche tipo di account gestito dalla scuola (come la posta elettronica scolastica, la intranet, ecc.) E se puoi delegare l'autenticazione a questo sistema esistente (in modo che gli studenti possano accedere con la loro e-mail scolastica e password come credenziali). Inutile dire che gli studenti difficilmente condivideranno tali credenziali con gli amici solo per fargli vedere il negozio.

    
risposta data 16.11.2015 - 13:57
fonte
13

Mettendo da parte il fatto che questo è futile, che è già stato stabilito, c'è una strada aggiuntiva che potrebbe essere presa in considerazione: un'autorizzazione obbligatoria a due fattori. Se hai bisogno di ciascun account di accesso per registrare un token 2FA (Google Authenticator, ecc.) O semplicemente fare clic su un link di verifica che è stato inviato attraverso un canale laterale se sembra un utente diverso, potrebbe innalzare la barriera all'ingresso.

    
risposta data 16.11.2015 - 16:24
fonte
7

Se la tua domanda è "funzionerà", la risposta è no. Senza ulteriori impronte digitali, è piuttosto banale per gli studenti condividere solo i dati dei cookie, rendendo il tuo schema completamente impotente. (E se hai altre impronte digitali, allora non hai davvero bisogno del cookie di sessione.)

Se la tua domanda è "questa è una buona idea", la risposta è ancora no. Oltre a non realizzare effettivamente ciò che desideri, causerà problemi agli utenti legittimi. Questo schema sarà peggiore in ogni modo misurabile rispetto alla semplice richiesta agli studenti di non condividere i conti.

Se la tua domanda è "può essere fatto in un modo migliore", bene, scusa ma la risposta è ancora no. Alcune forme di fingerprinting, come menzionato nella risposta di @Philipp, potrebbero aiutarti a monitorare meglio quanti utenti unici accedono ai tuoi contenuti, e forse anche a controllare quanti direttamente accedervi. Come notato, questa è una scienza inesatta e non sarà completamente accurata.

Tuttavia, il problema è che il tuo obiettivo dichiarato non è controllare quanti utenti direttamente accedono alle informazioni; è come molti accedono all'informazione. A volte puoi renderlo più difficile / fastidioso via DRM, ma semplicemente, letteralmente, non è possibile limitare completamente i dati con misure tecnologiche. Una volta che gli studenti hanno accesso ai dati, non puoi impedire loro di condividere tali dati, completamente al di fuori del tuo servizio. (Nota: non solo l'aggiunta di DRM potrebbe essere un progetto molto più grande di quanto speri, ma è anche utile soprattutto per dati binari come eseguibili o video. Se una parte significativa dei tuoi dati privati è testo, non puoi essere in grado di fare molto.)

La soluzione migliore è semplicemente chiedere agli studenti di non farlo. Se non ti puoi fidare degli studenti con dati privati, non dovresti rendere i dati disponibili affatto.

Se sei ancora determinato a farlo (spero che tu non lo sia), la mia raccomandazione è che il meglio che puoi sperare sia includere in qualche modo entrate poco significative nei dati, che vengono generati in modo programmatico in base agli account utente degli studenti. Ciò non impedirà agli studenti di condividere, ma se i dati vengono raccolti da qualche parte che non dovrebbe essere, potresti avere almeno una possibilità di rintracciare chi originariamente l'ha condiviso.

    
risposta data 16.11.2015 - 23:34
fonte
6

Hai citato Netflix, ma ci sono differenze importanti tra la tua proposta e Netflix. Netflix impone un limite al numero totale di dispositivi che possono essere "pre-autorizzati" - cioè, dove l'utente non deve reinserire una password o un codice di autorizzazione - contemporaneamente, ma il limite è più alto (è stato sei, ora può essere 50), e se l'utente raggiunge il limite, non rifiuta la nuova autorizzazione, semplicemente annulla l'autorizzazione del dispositivo meno recente utilizzato. Inoltre, applica il limite di un solo dispositivo (o, due o quattro, a seconda dell'account) che trasmette effettivamente un video allo stesso tempo.

Si noti inoltre che utilizzando un cookie da solo per identificare un dispositivo, un utente con un singolo computer che passa da un browser all'altro (ad esempio IE e Firefox, o IE e Chrome, o IE e Opera, o Chrome e Firefox) apparirà stai usando due dispositivi. Se l'utente chiama il supporto tecnico per alcune applicazioni e viene detto "cancella i cookie" (un primo passo comune), sembrerà che stia utilizzando un nuovo dispositivo. Anche i tablet Android dei miei bambini hanno due browser, quello Android predefinito e Chrome.

Se il "contenuto" è costituito da immagini o testo, è praticamente impossibile impedirne la copia, nel peggiore dei casi da una telecamera puntata sullo schermo.

Quindi la tua proposta ha un errore evidente, almeno dal punto di vista dell'usabilità.

    
risposta data 16.11.2015 - 17:00
fonte
5

Vorrei iniziare con questo: Non credo che la tua soluzione ti aiuterà in alcun modo a impedire che condividano ciò che c'è su quel sito web con gli amici.

Perché?
Che cosa succede se fanno una condivisione dello schermo e poi mostrano loro cosa c'è su quel sito? In termini di condivisione, non puoi fermarlo. Possono fare screenshot, stampare materiale, registrare video, ecc.
L'alternativa
A: Un modo per farlo è quello di limitare il webshop a essere disponibile solo sulla rete scolastica, sui PC della scuola. Il motivo per cui vuoi farlo è che puoi:

  1. Controlla chi sta effettuando l'accesso.
  2. Controlla il PC e assicurati che non possano condividere contenuti.

Detto questo, possono comunque scattare foto con i loro telefoni e condividere cose in questo modo.

B: La quantità di sforzi e sicurezza che si mettono in atto dovrebbero essere direttamente correlati a ciò che si sta tentando di proteggere. Forse vuoi riconsiderare l'intera app web super sicura e consentire alle persone di accedere regolarmente e sconsigliarne strongmente la condivisione. È quindi possibile eseguire una "revisione" dell'attività e se le persone non utilizzano i propri account in modo legittimo, limitare l'accesso al negozio online.

    
risposta data 16.11.2015 - 10:54
fonte
4

Ho implementato un meccanismo simile su uno dei miei siti Web con traffico elevato con contenuti a pagamento. L'ho realizzato utilizzando i cookie di sessione del browser. Il cookie di sessione corrente viene memorizzato nel DB e quando il cookie corrente cambia perché la persona ha effettuato l'accesso da qualche altra parte, la prima sessione deve eseguire nuovamente l'accesso. Ciò non impedisce necessariamente la condivisione di credenziali, ma impedisce a più utenti di utilizzare il sito contemporaneamente. Se due o più utenti decidono di utilizzare il sito contemporaneamente, tutti devono costantemente riconnettersi ad ogni visita di una pagina, il che probabilmente sarebbe abbastanza fastidioso da impedirlo. Ad un certo punto il titolare del conto originale si stanca e cambierà la password e non la condividerà più.

Detto questo, dopo alcuni test con questa funzione, abbiamo deciso di disabilitarlo. Lo abbiamo fatto per alcuni motivi:

  1. La funzionalità stava causando più mal di testa per i nostri utenti esistenti, quindi la sua utilità nella prevenzione della condivisione dell'account. Molti dei nostri utenti volevano utilizzare il nostro sito sia a casa che al lavoro e non gli piace dover effettuare nuovamente l'accesso più volte al giorno. È anche peggio se lo usano sul loro dispositivo mobile o con più browser. Abbiamo preso in considerazione l'aumento del numero di sessioni consentite, ma abbiamo deciso contro di esso.
  2. Il nostro prodotto è abbastanza economico che molte persone preferiscono pagare per il proprio account piuttosto che prendersi la briga di condividere.
  3. Sappiamo che alcune persone condividono e semplicemente non ci interessa. La maggior parte della condivisione che vediamo proviene da paesi in cui il nostro prodotto può essere percepito come costoso dai loro standard di reddito. Non ho alcun problema con gli amici di quei paesi che stanno insieme e pagano il nostro prodotto come una squadra. Non è probabile che perderemo comunque le vendite, se ogni individuo non potesse permettersi il prezzo da solo.
risposta data 16.11.2015 - 18:21
fonte
2

Leggermente diverso dalle risposte leggermente, ma propongo di aggiungere alcune informazioni molto personali all'account utente in modo che lo studente non voglia di condividere la sua password.

Ad esempio, collega il loro account con il loro database scolastico: non vuoi che nessuno stia marcando i tuoi voti. Inoltre, aggiungi cose come il numero di telefono, l'età, l'indirizzo, i nomi dei genitori, ecc. che non possono essere modificati dall'utente stesso ma solo dalla scuola responsabile.

Anche la mia scuola usa questo metodo: la mia scuola ha un sito web sul quale inviare i saggi (ad es.), e per impedire la condivisione delle password lo collegano al programma, ai marchi, ai dati personali ecc.

Proprio come gli altri hanno detto, identificare e distinguere completamente persone / account è impossibile . Buona fortuna!

    
risposta data 16.11.2015 - 22:23
fonte
2

Quello che stai proponendo non funzionerà. Le persone utilizzano browser diversi, entrano in modalità privacy, accedono a un computer di lavoro, accedono dal proprio telefono, effettuano l'accesso da un altro computer sempre. Alla gente viene detto di cancellare i cookie tutto il tempo solo per risolvere altri problemi. Io stesso ho più computer e uso più browser. Il tuo sito sarebbe totalmente inutilizzabile per me entro un giorno o due. Il tuo sito Web sarà praticamente inutilizzabile molto rapidamente e gli studenti ti bombarderanno con richieste di accesso costante. I cookie rendono lo storage persistente davvero terribile perché non sono mai stati pensati per persistere!

Netflix controlla in effetti il numero di vapori che un singolo utente può trasmettere in qualsiasi momento. Ma lo fanno attivamente, non basandosi semplicemente su un cookie che persiste sempre. Se è davvero necessario controllare la quantità di accessi, è necessario tenere traccia della quantità di accessi ATTIVI. Ciò significa monitorare se la pagina del browser è aperta, non semplicemente un semplice approccio cookie. Un modo per farlo è attraverso javascript in esecuzione sul tuo sito Web che invia attivamente un ping al server. Quando il ping non viene più ricevuto, disattiva l'accesso.

Se non riesci a tenere traccia degli accessi attivi, sarai in un mondo di dolore. Potresti pensare di poter simulare un po 'di tempo perché sei piccolo, ma il tuo sito sarà ancora inutilizzabile, e tutto perché stai cercando di impedire agli utenti di condividere gli accessi.

    
risposta data 16.11.2015 - 22:55
fonte
1

Assicurati che le credenziali uniche per ogni persona danno accesso a informazioni private che la persona non desidera condividere con altre persone. Informazioni sulla carta di credito, voti, indirizzo di casa, numero di telefono, e-mail privata, ecc. Consentono acquisti che verranno fatturati allo studente in seguito, ma che possono essere spediti a qualsiasi indirizzo. E così via.

Questo mette quindi un enorme incentivo nel sistema affinché gli utenti mantengano segrete le proprie credenziali e si auto-controllino. Nessuno, ad esempio, cederà le sue credenziali bancarie a qualcun altro.

Questo può essere ottenuto non solo fornendo le informazioni sensibili nell'applicazione, ma anche forzando il riutilizzo di un login che funziona in un altro sistema che fornisce tali informazioni - forse anche in una sorta di OpenID.

Per rispondere all'idea che gli studenti non sono molto attenti alla sicurezza, sono convinto che ci sia un modo per farlo che funzioni. Metti le informazioni sensibili nella home page e nella parte superiore di ogni pagina (o almeno un link per andare direttamente lì, grande e chiaramente etichettato).

Qualsiasi studente che scopre che le sue informazioni sono state utilizzate o che il suo account è stato modificato si affretterà a informarti ea chiudere l'accesso agli altri.

    
risposta data 16.11.2015 - 23:55
fonte
1

Un problema simile che Amazon ha dovuto risolvere riguarda " Famiglie "caratteristica. Amazon ti consente di unirti agli account per condividere alcuni vantaggi di Amazon Prime (ad es. Spedizione gratuita di 2 giorni). L'intento è che una famiglia abbia solo bisogno di acquistare Prime una volta, ma questo è ovviamente aperto ad abusi dove le persone potrebbero unirsi agli account con gli amici e dividere il costo di Prime.

Amazon mitiga questo problema rendendo i metodi di pagamento parte degli account condivisi, quindi chiunque partecipi a una "famiglia" può anche vedere e utilizzare i tuoi metodi di pagamento. So che senza questo, sarei tentato di condividere account con amici occasionali, ma ora che i metodi di pagamento sono condivisi, sono improvvisamente molto più schizzinoso su chi lo condivido!

    
risposta data 17.11.2015 - 16:25
fonte
0

Molte aziende adottano un approccio di autenticazione a due fattori in cui l'utente riceve un codice SMS su un numero di telefono preregistrato che viene utilizzato per accedere durante l'immissione delle credenziali.

Sebbene si tratti di una misura di sicurezza, ha un effetto collaterale nel rendere difficile (se non impossibile) condividere le credenziali con più utenti. Aggiungi anche alla scadenza di questa sessione ogni poche ore, a seconda della frequenza con cui gli utenti accedono al tuo sito.

Puoi anche utilizzare i cookie per scoprire se un utente ha più sessioni di accesso simultaneamente, il che potrebbe implicare che l'utente abbia condiviso le sue credenziali.

Ovviamente non è una soluzione perfetta al tuo problema, ma è fattibile e può essere applicato per rendere difficile il riutilizzo delle credenziali tra più utenti.

    
risposta data 16.11.2015 - 19:03
fonte
0

Puoi sviluppare un sistema in cui le persone possono accedere utilizzando la verifica biometrica. Per esempio. una foto può essere scattata usando la webcam e quindi il software estrae i dati da quello che per la stessa persona è unico, che non cambia nel tempo scale dell'ordine di alcuni anni.

    
risposta data 16.11.2015 - 22:05
fonte
0

Suggerirei intervalli IP. Ciò fornirà una protezione sufficiente contro la condivisione dell'account, ma consentirà comunque modifiche IP.

L'intervallo IP valido per l'utente in questione può essere determinato da una ricerca automatica su WHOIS. (In realtà, WHOIS è progettato per consentire ricerche automatiche). È quindi possibile richiedere un IP come 94.254.51.234 e ottenere una risposta come 94.254.0.0 - 94.254.127.255. Quindi aggiungi la voce "94.254.0.0 - 94.254.127.255" al tuo database di autenticazione.

Questo deve essere fatto ogni volta che un utente effettua l'accesso da un dispositivo "non autorizzato" e il numero di dispositivi autorizzati è inferiore a 2.

In aggiunta, puoi fare in modo che i dati di accesso dai computer della scuola siano "Sempre gratuiti", ad es. non è necessario influire sull'autorizzazione.

Questo renderà il sistema così poco importa qualsiasi cosa l'utente faccia sul computer client (come la cancellazione dei cookie), e permetterà all'utente di accedere da un numero illimitato di dispositivi in una casa specifica (come il tablet, il PC, mobile e così via.

Il limite di 2 intervalli IP è quindi abbastanza buono, poiché l'utente di solito accede da casa, da cellulare e da scuola. Quindi casa e dispositivo mobile sarebbero dispositivi "autorizzati" e la scuola è un dispositivo "gratuito".

Un altro modo è di fornire all'utente un token Yubico U2F (che vende per $ 18 a Yubico), che sostituirà il nome utente / password. Ricevono solo UN gettone, e ottenere un nuovo token registrato costerà 50 $. Quindi sarà molto più difficile condividere l'accesso piuttosto che condividere un nome utente / password per telefono. Combinato con la restrizione dell'intervallo IP, renderebbe molto difficile la condivisione dell'accesso.

    
risposta data 17.11.2015 - 11:17
fonte
0

EDIT: In breve, la soluzione è sbagliata. Ecco un'alternativa.

...

Come ho capito, questo è un problema comune presentato in un modo non comune.

Autenticazione a più fattori? Date loro un accesso regolare e quando tentano di accedere, invia loro un testo contenente un codice casuale a 5 cifre (o altro) che devono poi inserire.

Questo significa che due fattori vengono presi in considerazione quando si registra quella persona:

  • Qualcosa che conosci (il nome utente e la password)
  • Qualcosa che hai (il telefono cellulare associato all'account).

Dato che si tratta di una scuola che può contenere informazioni riservate, questo tipo di approccio dovrebbe essere utilizzato su tutta la linea (poiché le unità condivise della scuola contengono spesso foto e simili).

Questo approccio è abbastanza facile da implementare tramite un'API SMS.

NOTA: Inoltre, il collegamento e-mail con una conferma potrebbe funzionare - un problema, ma se la sicurezza dei bambini è la tua priorità qui, potresti essere disposto a seguire questa strada.

    
risposta data 17.11.2015 - 20:44
fonte

Leggi altre domande sui tag