Sto implementando un'app Web con il ripristino del flusso della password. Ecco cosa ho fatto per cercare di renderlo sicuro.
- Inserisci l'indirizzo email nel modulo password dimenticata.
- Indipendentemente dal fatto che il cliente esista, l'applicazione segnala una email inviata, questo evita di rivelare l'esistenza di un indirizzo email.
- Genero una stringa casuale sicura, quindi la crittografo e la utilizzo come token di accesso con validità di 1 giorno.
- Il cliente fa clic sul link indietro che ha un parametro token, controllo la tabella clienti e li autorizzo al modulo di reimpostazione della password se il token è valido.
- In questo modulo inserisco il valore del token, non l'ID del cliente in fase di reimpostazione che evita di esporre l'id.
Ora la prima domanda è, è abbastanza sicuro?
Ma la mia domanda principale è relativa a Hibernate e parametri - la mia query è come "Seleziona c dal cliente dove c.token =? 1 and c.activeDate > DATe_NOW". Passo nel valore del parametro token non elaborato.
In JPA / Hibernate o JPQL, c'è il rischio di un attacco di iniezione modificando il parametro token quando sto usando parametri posizionali come questo nella query?