Modifica: Questo non è rilevante per questa particolare domanda , ma un consiglio sull'argomento in generale.
Sembra che quello che vuoi veramente sia un meccanismo di autenticazione appropriato. Non dovresti provare a tirare il tuo , poiché è considerato una cattiva pratica. Un meccanismo di autenticazione sicuro e affidabile è HTTP Digest Access Authentication, che è profondamente ancorato nel framework HTTP. Si tratta di un protocollo di risposta alle sfide, il che significa che qualcosa in questo senso si verifica quando un utente tenta di accedere al meccanismo di "caricamento dei file":
- L'utente passa al link
- Il server nota che la directory / protected / o il file upload.html è protetto dall'autenticazione del digest e risponde con un codice di errore Autorizzazione richiesta . In esso è una sfida per l'agente utente (il browser Web) a cui rispondere. La risposta viene calcolata utilizzando la sfida, le credenziali dell'utente (nome utente e password) insieme ad altre informazioni.
-
L'utente inserisce la password, portando l'agente utente a fornire al server un'intestazione Autorizzazione , contenente la risposta alla sfida
-
Il server, utilizzando le credenziali che ha memorizzato sull'utente, calcola lo stesso valore di risposta utilizzando gli stessi dati che ha inviato all'utente.
-
Il server confronta il valore di risposta ricevuto e generato localmente e, se sono uguali, concede l'accesso al realm
protetto
Tutto questo viene fatto usando l'hashing MD5 come standard. L'applicazione e i server possono essere configurati per utilizzare MD5, SHA-X o qualsiasi algoritmo di hashing - anche hashing iterato, purché la stessa procedura venga seguita su ciascun lato della comunicazione.
MD5 è considerato rotto , nel senso che è abbastanza facile trovare collisioni . Questo non è un problema per questo processo di autenticazione, poiché richiede una forma di attacco preimage per raccogliere correttamente la password. Questo è possibile solo teoricamente con una complessità computazionale di 2 123.4 .
Se sei intimidito da questo, o lo schema non si adatta a ciò di cui hai veramente bisogno, almeno memorizza la tua password in un modo salato, con hash, cioè il database contiene:
nome utente | hash_function (password + ":" + salt) | sale
Qui, SHA-256 dovrebbe essere a posto.
Chiedi maggiori dettagli su Auth HTTP Digest. se interessato.
Inoltre, considera la possibilità di aggiungere il tuo tipo di applicazione server (Apache?) Alla domanda.