Ho creato un pannello di amministrazione Web con la seguente implementazione di sicurezza.
- Si trova in una sottodirectory del web, che attiverà un errore 404 quando tenterà di accedere (proprio come il link è rotto o non esiste).
- Questo (solo se viene aperta la sottodirectory corretta) a sua volta invia una e-mail all'amministratore, con un url, che ha un token.
- Il token è di 2 parti, uno è un md5 casuale di 5 numeri a 5 cifre casuali, un altro è un
md5(strrev(md5(IP_ADDR)))
. Il token viene salvato nel database invalidando tutte le altre sessioni. - Questi token sono separati da un segno _.
- Quando l'amministratore (o chiunque) tenta di accedere all'URL, per prima cosa il token IP viene abbinato se lo stesso IP sta accedendo all'URL. In caso contrario, viene visualizzata la pagina 404.
- Se sì, il token casuale salvato nel database viene confrontato con quello inviato per posta. Se anche questo ha successo, si apre il pannello di amministrazione.
- Qualsiasi tentativo non valido mostrerà l'errore 404.
- Questo token verrà automaticamente invalidato ogni 20 minuti, grazie al cron job.
A condizione che l'e-mail possa essere aperta solo dall'amministratore del sito web.
Quali potrebbero essere i difetti in questa implementazione? Come può essere migliorato?