Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Domanda >> password >> .

Come puoi reimpostare le password degli utenti se conosci la sua password corrente?

Dovresti mai Utilizzare la password esistente di un utente per ripristinarlo, anche se lo sai. Questa è una massiccia vulnerabilità per la sicurezza e una violazione delle migliori pratiche. Ecco perché e come dovresti * effettivamente * reimpostare le password:

Perché l'uso della password esistente è sbagliato:

* Sicurezza compromessa: Se è possibile utilizzare la vecchia password per impostarne una nuova, chiunque abbia accesso a quella capacità (ad esempio, un dipendente canaglia, un hacker che compromette il tuo sistema) può cambiare silenziosamente le password dell'utente e assumere account senza che l'utente lo sappia.

* Perdita di responsabilità: Se conosci la password di un utente, è possibile eseguire teoricamente le azioni come utente. Questo rende impossibile il revisione contabile e la responsabilità. Non puoi dimostrare che l'utente ha intrapreso l'azione, poiché avresti potuto farlo da solo.

* Principi di archiviazione password: I sistemi moderni non archiviano mai le password in chiaro. Sono *hash *e spesso *salato *. Anche se * potresti * ottenere l'hash memorizzato, utilizzandolo per impostare una nuova password sconfigge lo scopo dell'algoritmo di hashing e introduce vulnerabilità. Cercare di invertire un hash è computazionalmente difficile e potenzialmente impossibile (progettato in quel modo!), Ma dare accesso alla sicurezza della password.

Il modo corretto per reimpostare le password (anche con accesso amministrativo):

I metodi corretti prevedono l'utente che avvia il processo di ripristino o un amministratore che attiva un ripristino che * forza * l'utente a scegliere una nuova password al momento successivo.

1. Reimpostazione della password iniziata dall'utente (self-service): Questo è il metodo preferito.

* Funzione "Password dimenticata": La maggior parte dei siti Web e delle applicazioni ha un link "password dimenticata" o "reimpostazione della password".

* Verifica e -mail: L'utente fa clic sul collegamento, inserisce il proprio indirizzo e-mail (o nome utente) e il sistema invia loro un'e-mail con un link univoco e limitato a tempo a una pagina di ripristino della password.

* Domande di sicurezza/Opzioni di recupero: Meno comune, ma ancora valido:l'utente risponde alle domande di sicurezza che hanno precedentemente impostato o utilizzano un metodo di recupero predefinito (ad esempio un numero di telefono di recupero).

* Nuovo INPUT PASSWORD: L'utente fa clic sul collegamento, viene portato in una pagina in cui può inserire e confermare una nuova password. Questa nuova password viene quindi saldamente hash e memorizzata.

2. Reimposta per la password avviata dall'amministratore (forzando una modifica):

* Pannello di amministrazione/strumento di linea di comando: L'amministratore utilizza uno strumento con autorizzazioni adeguate per reimpostare il * stato * della password, non per * impostare * una nuova password direttamente.

* Flag per password Modifica: Il sistema imposta un flag sull'account dell'utente che li costringe a modificare la password la prossima volta che accedono.

* password temporanea (non consigliata): In * alcuni * casi molto specifici (e * solo * se non sono disponibili altre opzioni), un amministratore potrebbe generare una password * temporanea *. Il sistema * deve * forza l'utente per modificarlo in una nuova password immediatamente al primo accesso con la password temporanea. Questa è generalmente una cattiva pratica perché:

* Richiede la memorizzazione della password temporanea, anche brevemente.

* Gli utenti potrebbero non cambiarlo immediatamente, aumentando il rischio.

Dettagli di implementazione (variano per sistema/linguaggio):

Il codice e i passaggi esatti dipendono dalla lingua e dal framework che stai utilizzando (ad es. Python con Django, PHP con Laravel, Node.js con Express, ecc.). Ecco uno schema generale:

* Backend (lato server):

* Hashing password: Usa un forte algoritmo di hashing come bcrypt, argon2 o scrypt (non MD5 o sha1, che sono considerati rotti). Le biblioteche sono prontamente disponibili per tutte le lingue principali.

* Generazione di sale: Genera un sale unico per ogni password. Il sale è un valore casuale combinato con la password prima dell'hashing. Questo impedisce gli attacchi del tavolo arcobaleno.

* Archiviazione password: Memorizza il * hash * e * sale * nel tuo database, mai la password in chiaro.

* RESET GENERAZIONE TOKEN: Quando viene richiesto un ripristino, genera un token casuale univoco (ad esempio, un UUID) e associarlo all'utente nel database. Includi un timestamp per scadere il token dopo un certo periodo (ad es. 1 ora).

* Invio e -mail: Utilizzare una libreria o un servizio per inviare e -mail. Assicurati che le tue e -mail siano correttamente formattate e non sembrino spam.

* Convalida del token: Quando l'utente fa clic sul collegamento di ripristino, convalida il token rispetto al database, verificando che esista, non è scaduto ed è associato all'utente corretto.

* Aggiornamento della password: Dopo una convalida riuscita, consentire all'utente di inserire una nuova password, l'hash con un nuovo sale e aggiornare il database. Invalidare o eliminare il token di ripristino.

* frontend (lato client):

* Forme sicure: Utilizzare HTTPS per crittografare la comunicazione tra il browser e il server.

* Misuratore di resistenza password: Fornire un feedback visivo all'utente sulla forza della propria password.

* Campo di conferma: Richiedere all'utente di inserire due volte la nuova password per prevenire gli errori di battitura.

Esempio (Python concettuale/Django):

`` `Python

da django.contrib.auth.hashers import make_password, check_password

da django.contrib.auth.models Import User

importare uuid

Importa DateTime

def reset_password_request (email):

Tentativo:

user =user.objects.get (email =email)

reset_token =uuid.uuid4 ()

user.profile.reset_token =reset_token # Supponendo che tu abbia un modello UserProfile

user.profile.reset_token_expiry =datetime.datetime.now () + datetime.timedelta (ore =1)

user.profile.save ()

# Invia e -mail con reset_token

Send_Password_Reset_Email (user.Email, reset_token)

restituire vero

Tranne user.doesnotexist:

restituire false # o gestire l'errore in modo appropriato

DEF Verify_Reset_Token (token):

Tentativo:

user =user.objects.get (profile__reset_token =token, profilo__reset_token_expiry__gt =datetime.datetime.now ())

restituire l'utente

Tranne user.doesnotexist:

restituire nessuno

def set_new_password (utente, new_password):

user.password =make_password (new_password) # hash la nuova password

user.profile.reset_token =nessuno # invalidare il token

user.profile.reset_token_expiry =nessuno

user.profile.save ()

utente.save ()

`` `

Considerazioni sulla sicurezza chiave:

* https: Usa sempre HTTPS per crittografare la comunicazione.

* Limitazione della velocità: Implementare la limitazione della tariffa per evitare attacchi di forza bruta sull'endpoint reimpostazione della password.

* Scadenza token: Impostare un tempo di scadenza ragionevole per i token di ripristino.

* Registrazione: Registra le richieste di reimpostazione della password e i tentativi a scopo di audit.

* Audit di sicurezza regolari: Rivedi periodicamente l'implementazione di reimpostazione della password per identificare e correggere potenziali vulnerabilità.

* Principio del minimo privilegio: Concedere solo le autorizzazioni minime necessarie agli amministratori in grado di avviare reinserisci i reset della password.

In sintesi, conoscere la password esistente di un utente dovrebbe * mai * essere utilizzata per ripristinarlo. Utilizzare i metodi sicuri, avviati dall'utente o iniziati dall'amministratore (forzando la modifica dei successivi accesso) sopra descritti per proteggere gli account utente e mantenere un sistema sicuro.

 

Domanda © www.354353.com