Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    Gestire i tentativi falliti di login

    Ciao a tutti! come gestite voi i tentativi falliti dei login?
    i casi che mi vengono in mente sono due, se ce ne sono altri meglio! parliamone
    1) l'utente può tentare infinite volte il login
    2) l'utente ha ad esempio 20 tentativi dopodichè l'account viene bloccato per 5 minuti (numeri puramente inventati)
    nel primo caso un attacker potrebbe creare uno script che dato un determinato nickname genera password a caso e le testa finchè non trova quella corretta e la salva. se venisse applicato al secondo metodo lo script porterebbe metterci anni a individuare la password (idealmente, perchè lo script potrebbe prima tentare password più usate come "qwerty", "000000", "123456" ecc... e beccarla in un secondo)

    Il secondo metodo però potrebbe dare altri problemi, perchè se l'intento dell'attacker è impedire il login a tutti gli utenti potrebbe fare uno script che ogni 5 minuti fallisce 20 tentativi di login per tutti gli utenti.

  2. #2
    E da dove li prenderebbe gli utenti con cui fare le prove?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    bè dipende dal sito... potrebbe essere manualmente se è presente un elenco degli iscritti o, prenderne due o tre che gli stanno antipatici che già conosce o, da un forum... o se ci sono delle vulnerabilità dal database o più semplicemente se gli id utente sono sequenziali e non casuali potrebbe creare uno script che legga nell' <h1> delle pagine da: miosito.com/user.php?id=1 fino a miosito.com/user.php?id=999999

  4. #4
    Se dovesse bastare eseguire indiscriminatamente:

    codice:
    miosito.com/user.php?id=xxx
    per ottenere info sugli utenti allora c'è un serio problema nella struttura del sito.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    si, ovviamente! ma il mio era un esempio. era per dire che uno idealmente può avere più modi per recuperare (anche solo parzialmente) un elenco dei nick del sito

  6. #6
    Inanzitutto dovresti salvare tutti gli indirizzi ip e in generale quante più informazioni possibili su ciascun tentativo di login. In più, come consiglio personale, potresti registrare il numero di richieste consecutive e adottare due provvedimenti differenti:

    - se il tutto avviene in un arco di tempo breve e in maniera anomala, per esempio dieci tentativi in sessanta secondi, puoi bloccare quell'indirizzo ip e non l'account perchè altrimenti creeresti fastidi nell'utente
    - se il tutto avviene in più minuti ma porta ad una serie di errori, magari dopo il quinto errore, per esempio, potresti far apparire un captcha in modo tale che un bot non può proseguire e se al successivo tentativo lascia il nuovo campo vuoto, procedi al ban per ip, segnalando il tentativo all'utente via mail poichè ne riconosci la natura

    Sono le due cose che mi sono venute al momento in mente, se vuoi puoi svilupparle/ampliarle come meglio credi

    Ciao

  7. #7
    Non si gestiscono i tentativi falliti, almenochè non è strettamente necessario.
    Oggi giorno esistono metodi alternativi per gestire gli attacchi di bruteforce.
    Personalmente utilizzo i token, ovvero un codice generato dinamicamente che viene mandato dal form di submit sotto tipo hidden, in modo da non far risultare nulla all'utente, e rendere un attacco di bruteforce impossibile: infatti il sistema non eseguirà il login e restituerà errore se il codice mandato dal form non corrisponde alla sua copia. (E' lo stesso funzionamento dei captcha).
    { Il metodo del token, è uno dei migliori, sopratutto se adattato ad ogni azione che l'utente può compiere (ad esempio inserire un messaggio in un forum), perchè ti protegge da altri attacchi, in gergo chiamati CSRF }
    Se vuoi avere maggiore sicurezza, puoi ovviamente inserire anche l'immagine del captcha (Anche se non te lo consiglio, personalmente li trovo fastidiosi).

    Se invece vuoi proteggerti semplicemente da accessi "umani" che cercano di entrare su un account, provando più password, puoi inserire il tuo "controllo" ad orario, bloccando l'accesso per alcuni minuti.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    non ho ben capito il metodo dei token... io genero un codice casuale e con cosa lo paragono?
    se premo su login ricaricherò la pagina e dovrò rigenerare il numero che difficilmente sarà uguale a quello nell'hidden, quindi dove lo salvo?
    e se è uno script ad accedere al form e non un umano perchè il token dovrebbe impedire il login?

  9. #9
    crei la pagina token.php, e dentro il suo contenuto:
    Codice PHP:
    $_SESSION["myid_3"] = $_SESSION["myid_2"];
    $_SESSION["myid_2"] = $_SESSION["myid"];
    $_SESSION["myid"] = md5(rand(0,99).md5(microtime()).time()); 
    La pagina token.php, non fà altro che generare un token. (Perchè salvarlo in più sessioni, ti starai chiedeno, la risposta è semplice: mentre fai il login, vengono cambiati più token, poichè si rigenera sempre uno nuovo, infatti solo con le sessioni puoi avere traccia di quelli creati.)

    Adesso, se vuoi applicare il token al form di login, aggiungi questo: (Devi ovviamente includere la pagina token.php, in quella del login.php)
    Codice PHP:
    <input type="hidden" value="<? echo $_SESSION["myid"]; ?>" name="token">
    Ed in fine, dove controlli che il login è esatto o meno, inserisci questo:
    Codice PHP:
    if($_POST["token"] == $_SESSION["myid_3"]){
    //OK
    }else{
    //Token errato

    Perchè il token ti protegge dagli attacchi bruteforce?
    Semplice, gli attacchi di questo tipo utlizzano script, che ciclicamente mandano degli input POST, ma se uno di questa cambia sempre, lo script bruteforce, non se ne accorgerà, perchè non simula l'attacco come una persona normale (Ovvero aprire il browser, andare sulla pagina, e premere il tasto submit). Tutta via esistono dei bot molto più intelligenti che riescono a simulare un vero e proprio browser, e proprio per questo, unico metodo per proteggersi anche da questi, è inserire un captcha.
    Il token come già detto, è la soluzione ottimale, non tanto ai login, ma ai pannelli utenti, poichè ti protegge dalle CSRF (Vedi guida linkata ).

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    a ok! ora ho capito il funzionamento
    però quindi ci son casi in cui potrebbe non funzionare...
    se invece controllassimo l'indirizzo ip e lo bloccassimo, come suggeriva Dario Alise?
    è possibile cambiare il proprio ip e bypassare questo controllo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.