Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Sistema di sicurezza

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323

    Sistema di sicurezza

    Ciao ragazzi volevo chiedervi secondo voi ha buona difesa questo sistema di login ??:
    Codice PHP:
    <?php 
    $nome 
    $_POST['nome'];    //L'input per il nome ha come massimo 10 caratteri
    $passw $_POST['pass'];   //L'input per la passowrd ha come massimo 10 caratteri 
    $nome =  htmlentites($nome); 
    $passw htmlentites($passw); 
    $pass base64_encode($passw); //La decripto per il confronto nel DB 

    if(get_magic_quotes_gpc()){ 
    $nome mysql_real_escape_string($nome); 
    $passw mysql_real_escape_string($passw); 
    $nome stripslashes($nome); 
    $passw stripslashes($passw); 

    $query mysql_query("Select * from  NOME-DB where Nome = $nome AND Pass = $passw"); $risultato mysql_num_rows($query); 
    if(
    $risultato 1){ 
    //Login avvenuto con successo! 
    }else{ 
    //Login non avvenuto.Reindirizzamento a login

    ?>

  2. #2

    Re: Sistema di sicurezza

    almeno due cosine:
    - la funzione base_64_encode e la relativa decode non sono funzioni per criptare le password!!
    devi impiegare degli hash come md5, sha1 (e non solo)
    - fai un casino l'impostazione get_magic_quotes_gpc() correggi così:
    Codice PHP:
    if( get_magic_quotes_gpc() )
       {
       
    $nome stripslashes($nome);  
       
    $passw stripslashes($passw);
       }
    $nome mysql_real_escape_string($nome);  
    $passw mysql_real_escape_string($passw); 
    Nella query mancano le virgolette per delimitare le stringhe in ingresso e io aggiungerei anche un bel LIMIT 1
    Codice PHP:
    $query mysql_query("Select * from  NOME-DB where Nome ='$nome' AND Pass = '$passw' LIMIT 1"); 
    Inoltre ci sarebbe da dire qualcosa riguardo ai brute force contro i quali ci si può proteggere con un rozzo
    Codice PHP:
     sleep(5); 
    o un più raffinato sistema che salva i tentativi falliti su db
    http://www.mtxweb.ch/php_learn/?p=1071

    Poi la sicurezza di un login non dipende tanto/solo da questo ma dipenderà dalla modalità in cui gestirai la "trasportabilità" dello status di "loggato" (sessioni, cookies, permessi, etc etc)...
    Inoltre la registrazione deve "curare" diverse cosine...

    Insomma non si può giudicare un sistema di login puramente con queste righe di codice...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    Ok grazie Oly, per avermi mostrato delle modifiche, mi sapresti spiegare che cosa fa sleep(5) ?

  4. #4
    ferma lo script per 5 secondi:
    essendo che il brute force un programma che prova a raffica tante password in questo modo prima di ottenere la risposta di login esatto/fallito dovrà aspettare 5 secondi...
    ergo... può fare "solo" 1 tentativo ogni 5 secondi... (per un brute force è una bella grana)

    in difetto si avrà che lo script viene intenzionalmente "rallentato" (anche in caso di login corretto!!) e cmq in linea assoluta non protegge concretamente dai brute force
    ne ho letto qui
    http://www.daniweb.com/forums/thread82966.html

    Inoltre per proteggersi sempre dai brute force può essere utile mettere un captcha...

  5. #5
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    ci sono molte altre precauzioni che dovresti prendere per un robusto sistema di login.....e qui oltre ad un base_64_encode non vedo nient'altro...
    oly ha ragione quando dice che devi impiegare md5 o sha1...Poi ricorda che una volta loggato l'utente deve tenere il suo stato in tutte le pagine del sito...e proteggerlo ,quello stato....
    Quindi le cose da fare sono tante....tante....

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    ma md5 e sha1 criptano la pass e poi? come le confrontano nel db?
    Me ne sapete fornire un già fatto da cui posso prendere spunto?

  7. #7
    Originariamente inviato da Ophy94
    ma md5 e sha1 criptano la pass e poi? come le confrontano nel db?
    Me ne sapete fornire un già fatto da cui posso prendere spunto?
    In pratica in sede di registrazione salvi la password criptata nel db...
    quando fai il login prima di formulare la query cripti la password e confronti la password criptata in sede di login con quella criptata in sede di registrazione (ovvero quella salvata nel db)

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    ma la password nel DB in che formato la cripto ? sh1 ? e quella immessa dall'utente sempre in sha1 giusto?

  9. #9
    Originariamente inviato da Ophy94
    ma la password nel DB in che formato la cripto ? sh1 ? e quella immessa dall'utente sempre in sha1 giusto?
    NO

    REGISTRAZIONE:
    un utente immette la password (ovviamente non ciptata) => lo script di registrazione cripta con una funzione idonea => la salvi sul db

    LOGIN:
    un utente immette la sua password (non ciptata) => lo script di login la cripta con la stessa funzione utilizzata in sede di registrazione => la confronti con quella salvata nel db => se coincide significa che è esatta

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    ok, perfetto in che formato mi consigli di criptarla?

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.