Il link che ha inserito alkatraz è già di per se una sicurezza ma è anche estremamente complesso, ovvero, se devi stare attento a tutto è meglio che ti chiudi in casa
Quelle che hai indicate come problematiche sono per lo più le più "quotate" come problematiche e risolte queste sei ad un ottimo punto.
Tieni anche presente che per attaccare un sito "di un certo calibro" come lo definisci tu, prima si attacca un sito come il tuo e poi si attacca il sito di un certo calibro da lì, quindi meglio sempre stare protetti o comunque mettere in essere una serie di sicurezze tali da stare tranquilli.
L'importante è mettere in pratica delle best practice e seguirle sempre, così hai due risultati non banali:
  1. semplificazione: quando ti impadronisci di una tecnica per quanto complessa sia, poi ti viene facile;
  2. facilità di modifica: seguire delle linee guida ti permette di aggiornarle continuamente modificando solo pochi punti salienti.


Io solitamente faccio così:


  1. registrazione: creazione del database:
    • tabella ( id_utente, nome, cognome, età, sesso, email, password, salt, data_iscrizione, posizione, note );
    • id_utente: autoincrement e chiave primaria
    • nome, cognome, età, sesso, email, sono gli unici dati che inserisce l'utente in fase di iscrizione; gli altri li genero io.
    • password e salt: ( se non sai cosa è il salt, è un numero casuale, un ID che viene sommato alla password prima di fare l'hash della medesima ). Non usare le funzioni del database per realizzare l'hash delle password ma usa uqelle builtin del PHP, vedi: la funzione hash.
    • data_iscrizione, è banale.
    • posizione e note: posizione è un tinyint che può essere -1= utente bannato, 0=non iscritto ( default), 1= iscritto, 2=amministratore, ecc. Note è l'unico campo che può stare a NULL e serve all'amministratore per inserire eventuali note per l'utente, ad esempio il motivo di un eventuale ban.

Ovvio che non sei obbligato a seguire queste mie linee guida, poi dipende da cosa vuoi realizzare; di solito me la complico ancora mettendo i campi password e salt in tabelle diverse, tieni presente che per estrema sicurezza dovrebbero stare in database separati e possibilmente su hosting diversi, ovvero computer diversi ( non sullo stesso VPN ) e meglio ancora in nazioni diverse! Tu non lavori alla CIA giusto? Nemmeno io
Comunque queste informazioni su OWASP le trovi.