Aggiungo:
1) questione md5 per l'HASH della password (è superato da tanti anni), inoltre per non prestare il fianco a sistemi che utilizzano rainbow table si usa il SALT random.
PHP mette a disposizione algoritmi più adeguati come BCRYPT e il più moderno (e resistente) Argon2i.
Qui tutto quello che ti serve per prendere spunto (o fare copia incolla del codice ):
https://php.net/manual/en/function.password-hash.ph
2) segui i consigli che ti ha dato @+m+ e che condivido
3) una prima protezione da implementare a supporto di applicazioni web esposte su internet è quella di filtrare le richieste tramite un WAF (Web Application Firewall).
Lo si installa in modalità reserve proxy o direttamente sulla macchina HOST. Nel mondo Open Source il più famoso è Mod Security
Altra soluzione è utilizzare servizi esterni. I più famosi sono: Cloudflare, SUCURI
4) un filtro ip per l'area admin è sempre una buona idea