Non implementare il proprio gestore di sessioni. Utilizza $ _ SESSION , è stato scritto e verificato da persone che hanno un'ottima conoscenza della sicurezza. Non conosco nemmeno la complessità di come funziona il gestore di sessioni, ma sulla base delle poche informazioni che ci hai fornito di non sicuro .
SQL Injection è utile per ottenere dati dal database. Abbiamo le password HASH perché nel caso in cui un utente malintenzionato ottenga questi dati, saranno costretti a crackare l'hash prima che sia utile. Tuttavia, nel tuo caso, non importa che tu sia vulnerabile a CWE-257 , l'autore dell'attacco puoi semplicemente estrarre l'ID di sessione dal database e utilizzarlo per l'autenticazione.
Potrei anche ottenere l'accesso come amministratore perché non hai fatto menzione di OWASP a9 - Protezione del livello di trasporto insufficiente . Sei anche vulnerabile a Clickjacking , ogni app web è di default. CSRF o "sessione di equitazione" era già menzionato.
Abilita i flag di sicurezza "httponly", "secure". Puoi farlo per $ _SESSION configurando PHP .
Una strategia di difesa approfondita è di pianificare il fallimento e limitare l'accesso dell'amministratore. Non consentire il caricamento di file o l'esecuzione di codice . Questo è il motivo numero 1 per cui le istanze di Wordpress vengono violate, una volta che si è amministrati su un sito Wordpress, si ha l'esecuzione di codice remoto sul server. Wordpress ha anche implementato il proprio gestore di sessione a un certo punto, e avete indovinato, era molto insicuro.