I bunn og grunn tror jeg ikke det er mulig å sikre seg 100% mot angrep. Det skal godt gjøres å bygge et system som er så sikkert at det ikke kan knekkes. Som Dyret er inne på så vil passordet, eller nærmere bestemt brukeren selv, være det svakeste leddet. Om du har satt opp et uknekkelig innloggingssystem som hasher og krypterer og verifiserer i alle retninger, så hjelper det svært lite om en bruker registrerer seg med passordet "a".
Nå har jeg kludret litt med dette her selv, og har kommet frem til at man egentlig bare må gjøre det man kan og sikre sin egen konto best mulig, så får man ta seg av slike angrep når de kommer (ved å lagre backuper og skifte passord jevnlig). For å beskytte databasen din bør du i det minste ha et skikkelig ulogisk passord av typen du ikke går rundt å husker. Bruk gjerne alle tre typer tegn (a-z A-Z 0-9 !-~) for å gjøre det vanskeligst mulig å gjette. Det er forresten også noe av grunnen til at noen nettsider tvinger det til å ha både tall og bokstaver i passordet.
Men om vi først skal lage noe som er ganske "sikkert" i PHP (fra serveren sin side, altså), så tenkte jeg på dette:
Bruke et innloggingsskjema med brukernavn og to eller flere passord (til samme konto). Passordene kan du hashe så mange ganger som du har tid til med flere saltst(r)enger. Hvert innlogginsforsøk som går i dass noteres med timestamp i databasen, slik at du kun har x antall forsøk uansett IP, sessions eller cookies. Som en bonus kan man notere IP-adressene som brukes også, slik at disse kan sjekkes eller sperres og sånt. Også må brukeren også svare på en CAPTCHA hver gang. Dette ville tatt rimelig lang tid og vært utrolig plagsomt, selvsagt. Hvis du er laget av gryn så kan du jo også legge inn en SMS-tjeneste, hvor du må taste inn en engangskode fra mobilen din ved innlogging. Ikke ulikt Bank-ID-systemet.