Accedi sicurezza - salvataggio di una sessione [chiuso]

-1

Sto creando un sistema di accesso. Il sistema più semplice controllerebbe semplicemente un database per un accesso e una password, quindi un session var che afferma login=true Sono interessato ad altre cose che posso fare per renderlo più sicuro. Ecco una lista generale di cose che ho già trovato. Sentiti libero di usare alcuni di questi articoli o di elencarne uno che non ho menzionato. Sono davvero interessato a trovare buchi di sicurezza ovvi che non sto coprendo.

  • codifica le password a una via nel database
  • salva e convalida l'indirizzo IP dell'utente
  • salva una variabile nella sessione che cambia ogni 10 minuti (anziché login=true ).
  • Utilizza il database invece delle sessioni.
  • Utilizza JavaScript per convalidare che l'utente sta utilizzando un browser.
  • Blocca un account dopo 5 accessi falliti.
  • Utilizza https
posta Hoytman 20.03.2014 - 14:31
fonte

2 risposte

6

Questa domanda è estremamente ampia, ma ti indicherò alcune informazioni che potrebbero aiutarti:

risposta data 20.03.2014 - 14:43
fonte
2

Sì, alla fine essere "loggato" equivale ad aver impostato una variabile di sessione. Quindi la tua domanda dipende fondamentalmente dalla sicurezza della sessione. Ecco un paio di cose che potresti voler controllare e / o prendere in considerazione:

  • Utilizza i cookie per gli ID di sessione, la condivisione dei link non porterà al dirottamento di sessione.
  • Utilizza idealmente HTTPS, in modo che le sessioni non possano essere facilmente dirottate in ambienti Wi-Fi aperti.
  • Assicurati che le falsificazioni delle richieste su più siti non funzionino sui tuoi siti.
  • Assicurati di non essere vulnerabile a attacchi di scripting cross-site , o almeno fai uso della% attributoHttpOnly di cookie.
  • Assicurati che gli ID di sessione non siano prevedibili e non possano essere corretti su valori predefiniti dall'utente
  • Assicurati che i tuoi dati di sessione non siano (facilmente) accessibili agli altri. Ad esempio, negli ambienti di hosting virtuali potrebbe essere facile per gli altri leggere o persino manipolare i dati della sessione, che di solito è un semplice file all'interno di /tmp .

Ovviamente questa non è una lista completa, piuttosto alcune cose che mi sono venute in mente.

one-way encode passwords in the database

Questo è ovvio! Ma la semplice codifica unidirezionale (cioè l'hashing) non è sufficiente in questi giorni. Cerca nelle funzioni di derivazione delle chiavi reali, ad es. PBKDF2 e bcrypt . Questi sono progettati per rallentare drasticamente gli attacchi di forza bruta.

Use the database instead of sessions.

Che cosa intendi con questo? Il database non sa nulla di HTTP.

Use JavaScript to validate that the user is using a browser.

Non può essere fatto.

Lock an account after 5 login fails.

Sebbene sia un'idea nobile, è completamente poco pratica per la maggior parte dei siti. Cosa fai con gli account bloccati? Hai intenzione di offrire supporto telefonico? Come si autenticano gli utenti al telefono? Quello che potresti pensare è un timeout, che renderebbe impossibile agli hacker persino provare a usare password brute force.

    
risposta data 20.03.2014 - 14:48
fonte

Leggi altre domande sui tag