Den ene er at registrere bruteforce attempts på den specifikke bruger. Det er ret simpelt; hvis man forsøger at logge ind mere end x gange på det samme brugernavn, så bloker adgangen for brugeren i 24 timer (eller fem).
Den anden er at registrere generelle bruteforce forsøg; det kan du eksempelvis gøre ved at registrere antal af forsøge logins på en specifik IP. Når en IP har forsøgt at logge ind mere end x gange, så blokerer IP'en i 24 timer (eller fem).
Du kan med rolighed gøre det ved hjælp af et par MySQL tabeller (eller en enkelt endda).
Jeg tror ikke jeg vil låse mig fast på IP-adresser, der kan være nogen der har adgang til mange IP-adresser eller har en dynamisk IP-adresse der skifter ofte eller deler IP-adresse med andre. Der er muligvis ikke en måde der er den bedste, der vil være fordele og ulemper med de forskellige metoder.
Så det kan måske løses ved at oprette 2 ekstra kolonner i users tabellen, en der hedder logon_error_count og en der hedder banned_until, hvor banned_until indeholder så et tidspunkt for hvor længe der ikke er adgang. Det er måske heller ikke så smart for så kan den rigtige bruger ikke logge på, hvis der er nogen der nogen der forsøger at hacke sig adgang.
Så måske skal IP-adresserne bruges:
Der er oprettes en tabel (errorlogons)
Med kolonnerne: userid, vartime, ip
Når brugeren logger på kontrolleres tabellen errorlogons for om der har været mere end 10 fejlforsøg indenfor seneste 24 timer og hvis der er det, så får brugeren ikke adgang fra den IP-adresse.
Så skal der gøres så poster i errorlogons der er ældre end 24 timer slettes ellers risikere man at det bliver langsomt.
Man kan vel evt. gøre så brugeren får besked hvis der er mange fejlforsøg (fra forskellige IP-adresser) så får brugeren besked på e-mail og eventuelt i indstilliger give brugeren mulighed for at blokere disse IP-adresser.
Der er intet problem med at bruge IP-adresser. Ingen har en dynamisk IP der skifter tusinder af gange i sekundet, og en hacker skal have et ekstremt stort botnet for at have de millioner af forskellige IP'er der skal til at bruteforce noget. Tænk på, at et password på bare 8 tegn vil kræve op til 167.961.600.000.000 forsøg for at gætte, hvis hackeren kan antage at der kun er store og små engelske bogstaver, samt tal. Er der også tegn i, bliver det mangedoblet.
Derfor er der så heller ingen der bruteforcer noget længere. Det er ikke en effektiv måde.
Jeg har haft stor glæde af at følge denne vejledning da jeg skulle udforme mit eget brugerlogin. Det er nemlig ikke kun bruteforce, der kan være et problem:
Jeg har fået udarbejdet noget kode, så man blokeres hvis man laver mere end 10 fejlforsøg, fra samme IP-adresse indenfor 24 timer.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.