+ Rispondi alla Discussione
Risultati da 1 a 16 di 16

Sicurezza login e limitazione accessi

Ultimo Messaggio di LorenzoRoma il:
  1. #1
    User
    Data Registrazione
    Sep 2015
    Località
    Roma
    Messaggi
    20

    Sicurezza login e limitazione accessi

    Salve a tutti ragazzi, stavo perfezionando il mio codice php di login e volevo chiedere informazioni riguardo alla sicurezza.


    Non solo a livello di criptaggio password e di esclusione di caratteri dannosi, ma anche riguardo la limitazione degli accessi.

    Su cosa posso agire per limitare gli accessi di un utente? dove tengo questa informazione?

    Grazie mille, se avete consigli sulla sicurezza in generale sono ben accetti.

  2. #2
    User
    Data Registrazione
    Jul 2009
    Messaggi
    344
    Limitare accesso agli utenti ? .... E' scritto nel tuo database, se hai fatto un login con i gruppi di utenti.
    Fai prima a scrivere il codice così da vedere dove migliorarlo...
    Ad esempio .... hai preso in considerazione i magic_quotes_gpc ?

  3. #3
    User
    Data Registrazione
    Sep 2015
    Località
    Roma
    Messaggi
    20
    Citazione Originariamente Scritto da infosicurezza Visualizza Messaggio
    Limitare accesso agli utenti ? .... E' scritto nel tuo database, se hai fatto un login con i gruppi di utenti.
    Fai prima a scrivere il codice così da vedere dove migliorarlo...
    Ad esempio .... hai preso in considerazione i magic_quotes_gpc ?
    Per limitare l'accesso intendo che dopo un tot di tentativi l'accesso viene bloccato magari per un periodo di tempo determinato.

    questa è la mia iscrizione:

    Codice PHP:
    <?php   include "connessione.php";?>

    <?php mysql_select_db($database);

    //htmlspecialchars( $our_string, ENT_QUOTES, 'UTF-8' )

    $mail=$_POST['email'];
    $email=htmlspecialchars$mailENT_QUOTES'UTF-8' );
    $username=$_POST['email'];
    $username=htmlspecialchars$usernameENT_QUOTES'UTF-8' );



    //controllo se l'username è gia presente nel database, in caso contrario proseguo con la registrazione$username_control = mysql_query("SELECT username FROM login WHERE username = '$username'");if(mysql_num_rows($username_control)) {
    header("location: /index.html");exit;}
    $email_control mysql_query("SELECT email FROM login WHERE email = '$email'");if(mysql_num_rows($email_control)) {
    header("location:/index.html");exit;}else{    // Lunghezza della password a 15 caratteri$lunghezza_pass = 15;
    // Ciclo su ogni carattere della passwordfor ($i=1; $i<=$lunghezza_pass; $i++){// Se $i è multiplo di 2...if ($i % 2){
    /* Aggiungo una lettera casuale usando chr() in combinazione con rand() */
    $pass_generata $pass_generata chr(rand(97,122));
    // Se $x non è multiplo di 2...}else{
    // Aggiungo alla password un numero // compreso tra 0 e 9
    $pass_generata $pass_generata rand(0,9);}}
    echo
    "$pass_generata";
    $to  $_POST['email'];$subject "Registrazione effettuata con successo!";$message "Messaggio personalizzato";$headers 'From: mail@...' "\r\n" .       'CC: mail@...' "\r\n" .           'Reply-To: mail@...' "\r\n" .           'X-Mailer: PHP/' phpversion();mail($to$subject$message$headers);



    //$password=sha1($pass_generata);

    $query="INSERT INTO login (username, email, password) VALUES ('$username', '$email','$pass_generata')";
    if ( 
    mysql_query($query) !== true ) {   echo "C'è stato un errore durante l'inserimento: " mysql_error();}else{ echo"inserito correttamente";}}

    ?>

    Questo è il mio login:

    Codice PHP:
    <?php session_start();?>
    <?php 
    include"connessione.php";?>
    <?php 
    //$pass=sha1($_POST['pass']);
    $query ="SELECT * FROM login WHERE username='{$_POST['user']}' AND password='{$_POST['pass']}'";

    $res=mysql_query($query);

    if ((!
    $res) OR (mysql_num_rows($res)==0)){
    echo
    "credenziali errate!!";    
    session_unset();    
    session_destroy();    
    exit;
    }else{
    $_SESSION['logged']=1;
    $_SESSION['user']=$_POST['user'];
    header("location: loginok.php");}?>

    Sto cercando di risolvere i piu comuni problemi di sicurezza! Ti ringrazio per l'aiuto!

  4. #4
    ModSenior L'avatar di Thedarkita
    Data Registrazione
    Aug 2006
    Località
    Messina
    Messaggi
    7,237
    Segui Thedarkita su Twitter Aggiungi Thedarkita su Google+ Aggiungi Thedarkita su Facebook Aggiungi Thedarkita su Linkedin Visita il canale Youtube di Thedarkita
    Ciao scartus,
    dovresti utilizzare una tabella per tenere uno storico dei tentativi di accesso da un determinato IP per bloccare solo quell'IP, oppure bloccare direttamente l'account a cui si tenta di accedere, la prima soluzione mi sembra comunque migliore.

    Fai attenzione perchè quello script è vulnerabile a SQL INJECTION, per maggiori informazioni in merito ti rimando alla guida che avevo scritto:
    http://www.giorgiotave.it/forum/scri...injection.html

  5. #5
    User
    Data Registrazione
    Sep 2015
    Località
    Roma
    Messaggi
    20
    Citazione Originariamente Scritto da Thedarkita Visualizza Messaggio
    Ciao scartus,
    dovresti utilizzare una tabella per tenere uno storico dei tentativi di accesso da un determinato IP per bloccare solo quell'IP, oppure bloccare direttamente l'account a cui si tenta di accedere, la prima soluzione mi sembra comunque migliore.

    Fai attenzione perchè quello script è vulnerabile a SQL INJECTION, per maggiori informazioni in merito ti rimando alla guida che avevo scritto:

    Si hai ragione mi ero scordato l'escape.

    Per quanto riguarda il numero di tentativi dici che è meglio farlo sull'ip?
    E invece agendo sul nome, è meglio fare un numero di tentativi e bloccare per un periodo predefinito o bloccarlo definitivamente? Forse hai ragione meglio poche possibilità ma bloccando l'ip..

  6. #6
    User
    Data Registrazione
    Jul 2009
    Messaggi
    344
    login : $user e $pass li passi alla query senza fare un controllo su ciò che ti ha inviato l'utente.

  7. #7
    User
    Data Registrazione
    Sep 2015
    Località
    Roma
    Messaggi
    20
    Citazione Originariamente Scritto da infosicurezza Visualizza Messaggio
    login : $user e $pass li passi alla query senza fare un controllo su ciò che ti ha inviato l'utente.
    Si si ho capito mi ero dimenticato l'escape. Ho usato il metodo che mi ha suggerito ​Thedarkita sul suo post. Da quello che ho capito ci sono diversi metodi di escape. Tu quale suggerisci?

  8. #8
    User
    Data Registrazione
    Jul 2009
    Messaggi
    344
    Utilizzando mysql_real_escape_string

  9. #9
    User
    Data Registrazione
    Sep 2015
    Località
    Roma
    Messaggi
    20
    Perfetto grazie, e per la limitazione degli accessi come ti muoveresti? bloccando l'ip o l'username?

  10. #10
    User
    Data Registrazione
    Jul 2009
    Messaggi
    344
    Ma bloccando l'ip non è una mossa giusta, vai a bloccare un indirizzo IP pubblico che cambia ad ogni connessione (Se spengo e riaccendo il router ottengo 1 altro indirizzo ip e accedo comunque al tuo sito) oppure mi metto un proxy e accedo lo stesso al tuo sito....

    Io bloccherei l'indirizzo email registrato.

  11. #11
    User
    Data Registrazione
    Sep 2015
    Località
    Roma
    Messaggi
    20
    Citazione Originariamente Scritto da infosicurezza Visualizza Messaggio
    Ma bloccando l'ip non è una mossa giusta, vai a bloccare un indirizzo IP pubblico che cambia ad ogni connessione (Se spengo e riaccendo il router ottengo 1 altro indirizzo ip e accedo comunque al tuo sito) oppure mi metto un proxy e accedo lo stesso al tuo sito....

    Io bloccherei l'indirizzo email registrato.
    Pero pensandoci se io provo ad accedere 20 volte con l'account infosicurezza e te lo blocco poi tu che fai? Cioè potrei bloccare qualsiasi account che vedo su un forum ad esempio. Se invece blocco l'ip dopo 3 accessi complico la vita a chi deve mettersi a spegnere e riaccendere o a cambiarsi ip piu e piu volte.. magari gli passa la fantasia... Senno si metterebbe chiunque a bloccare username e email

  12. #12
    User
    Data Registrazione
    Jul 2009
    Messaggi
    344
    No perdonami,
    ma per me non ha senso ciò che hai scritto, o meglio non ho capito io cosa intendi che puoi bloccare qualsiasi account.
    A questo punto credo che tu voglia bloccare un utente o ad esempio un bot, che tenta di accedere X volte sbagliando di continuo user o password.

    A quel punto, dopo circa 3 / 5 tentativi gli fai uscire il codice captcha da inserire (Se è un bot, la smetterà visto che non conosce il codice), se continua allora prendi le giuste precauzioni IP o User a tua scelta e per sbloccarlo gli mandi il link su email.

  13. #13
    User
    Data Registrazione
    Sep 2015
    Località
    Roma
    Messaggi
    20
    Citazione Originariamente Scritto da infosicurezza Visualizza Messaggio
    No perdonami,
    ma per me non ha senso ciò che hai scritto, o meglio non ho capito io cosa intendi che puoi bloccare qualsiasi account.
    A questo punto credo che tu voglia bloccare un utente o ad esempio un bot, che tenta di accedere X volte sbagliando di continuo user o password.

    A quel punto, dopo circa 3 / 5 tentativi gli fai uscire il codice captcha da inserire (Se è un bot, la smetterà visto che non conosce il codice), se continua allora prendi le giuste precauzioni IP o User a tua scelta e per sbloccarlo gli mandi il link su email.
    Parlavo del caso in cui non inserissi nessun captcha. se bloccassi un username solamente perche ha sbagliato password 5 volte. Chiunque potrebbe scrivere 5 volte il mio username e bloccarmi l'accesso.

    Anche inserendo il codice captcha vorrei che l'username (o l'ip) fosse bloccato per tot minuti. Pero bloccando l'username torniamo al problema appena descritto

  14. #14
    User
    Data Registrazione
    Jul 2009
    Messaggi
    344
    Eh ho capito ora...
    ma devi prendere una decisione su come agire, e ripeto per me la cosa più sensata è quella di mettere un captcha per capire se è un bot o un umano.
    Se proprio non vuoi, allora c'è poco da fare, non conosci l'identità della persona quindi blocchi l'indirizzo IP a monte e non fai eseguire query al database.

  15. #15
    User
    Data Registrazione
    Sep 2015
    Località
    Roma
    Messaggi
    20
    Se anche inserissi un captcha io persona umana potrei bloccare il tuo username!

    Se un giorno non avessi nulla da fare e venissi sul forum GT e provassi ad inserire per 5 volte il tuo username te lo bloccherei perche sbaglio la password e tu non potresti piu entrare. Cosi solo pe ril gusto di farlo. Quindi non basta il captcha come misura. Blocca i bot ma non blocca le persone stupide. Quindi ci vuole una combo.

  16. #16
    Utente Premium
    Data Registrazione
    Jul 2012
    Località
    Roma
    Messaggi
    1,218
    Intanto credo che sia fondamentale capire di che tipo di login si tratta.

    Se il login lo deve poter fare una sola persona è una cosa, se invece devono poter loggare diverse persone da diversi computer allora il discorso è diverso.

    Io intanto farei che se uno sbaglia l'username al secondo tentativo sbagliato viene bloccato per N minuti, così intanto blocchi i bot.
    Ma ovviamente questa soluzione non va bene per i forum e gli accessi a siti in cui gli username sono pubblici.

    Il captcha come soluzione lo eviterei, serve solo a dimostrare di essere una persona e non un bot.

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.