Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365

    [php] sicurezza e controllo login

    Salve sto facendo un sito con l'autenticazione utente e mi funziona tutto, solo che vorrei qualche vostro consiglio

    ho una pagina login.php

    a questa pagina vengono mandati nome utente e password inseriti in un form precedente

    qusta pagina fa il controllo:

    Codice PHP:

    $query_username 
    mysql_query("SELECT id FROM operatore WHERE login ='$username' "); 

    if(list(
    $id_utente) = mysql_fetch_row($query_username)){
        
    $query_password mysql_query("SELECT password FROM operatore WHERE id = '$id_utente'");

    list(
    $password_db) = mysql_fetch_row($query_password);

        if(
    $password_db == $password)    
            
    $_SESSION['login'] = $id_utente;


    molto semplice controlla se nel BD c'è un id_utente che ha una login uguale a quella passata dal form precendente; poi controlla se la password di questo utente corrisponde alla password passata dal form

    e questo è facile... se queste condizioni sono soddisfatte mette in una variabile sessione l'id utente.

    ogni volta che voglio far visualizzare una pagina riservata o una pagina relativa all'utente controllo se la sessione è settata

    Codice PHP:
    if(isset($_SESSION['login'])) {

    pagina che voglio far visualizzare solo alla persona LOGGATA


    ORA questa mia procedura ha qualche falla di sicurezza? si puo migliorare in qualche modo?

    avevo pensato ogni volta (ad esempio) che volevo visualizzare una pagina riservata controllare se nel DB fosse presente un utente con quell'id ecc...

    aspetto notizie grazie

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Vedere guida sulla sicurezza piaccapì, daaah.

    [.:: JaguarXF ::.]
    __________________

  3. #3

    Re: [php] sicurezza e controllo login

    Originariamente inviato da coteaz
    molto semplice
    molto macchinosa invece, non servono due query, quando tiri giù l'utente per id seleziona anche il campo password, in modo da non dover eseguire un'altra query dopo.

  4. #4
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    ok va bene, vada per una sola query, e per quanto riguarda la sicurezza cosa consigliate? magari mi potete postare il link di un topic simile?

  5. #5
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    allora

    ho letto tutta la guida

    http://php.html.it/guide/leggi/121/g...urezza-di-php/

    va bene il controllo md5 sulle password ho fatto le modifiche dovute

    Codice PHP:
    session_start();

    $username $_REQUEST['username'];

    $password $_REQUEST['password'];
    $password md5($password);

    $querymysql_query("SELECT id, password FROM operatore WHERE LOWER(login) = LOWER('$username')");

    if(list(
    $id_utente$password_db) = mysql_fetch_row($query)){

        if(
    $password_db == $password)    
            
    $_SESSION['login'] = $id_utente;


    ora visto che sulla guida nn si parlava molto di sessioni... POSSO SAPERE SE è SICURO METTERE IN SESSIONE L'id_utente

    e poi è sicuro fare solo

    Codice PHP:
    if(isset($_SESSION['login'])) {

    pagina che voglio far visualizzare solo alla persona LOGGATA


    come controllo nella pagina riservata?

  6. #6
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Le sessioni arrivano la prossima puntata, ora siamo a 15/24

    [.:: JaguarXF ::.]
    __________________

  7. #7
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Comunque sì ad entrambe le domande.


    [.:: JaguarXF ::.]
    __________________

  8. #8
    Originariamente inviato da coteaz
    ok va bene, vada per una sola query, e per quanto riguarda la sicurezza cosa consigliate?
    un paio di annotazioni... se i dati che aspetti ti devono arrivare per POST, usa $_POST e non $_REQUEST perche' $_REQUEST prende tutto per buono (post/get/cookies) ....
    codice:
    $password = md5($_POST['password']);
    Quando verifichi l'utente non estrarre la password, ma verificala direttamente nel db.

    select id, privilegi from tabella where utente = '$utente' and password = '$password'

    Non usare per verificare il login isset($_SESSION['login'] perche' lascia il tempo che trova. ti dara' true anche se $_SESSION['login'] fosse vuoto. Usa empty() e ci starebbe pure bene un riferimento del valore id, ed anche un codice per i privilegi assegnati.

    per esempio parti con l'id dal valore 10000 e per i privilegi assegna: admin = 2222, user = 3333

    codice:
    <?php
    session_start();
    
    if(!empty($_SESSION['id']) AND $_SESSION['id']  >= 10000 ) {
    
         if(!empty($_SESSION['privilegi']) and $_SESSION['privilegi'] == 2222 ) {
    
             pagina admin
       
                   elseif($_SESSION['privilegi'] == 3333 ) {
     
                     pagina user
    
                     }     else    { accesso negato, torna al login   }
    
    } else { accesso negato, torna al login   }
    chiaro che e' un semplice esempio, si puo' fare di piu' e di meglio. Ma la sostanza e' questa.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Non usare per verificare il login isset($_SESSION['login'] perche' lascia il tempo che trova. ti dara' true anche se $_SESSION['login'] fosse vuoto.
    Vuoto ma esistente... e se l'utente non si autentica, tale variabile non viene settata. Quindi non ci vedo tanta differenza...

    [.:: JaguarXF ::.]
    __________________

  10. #10
    Originariamente inviato da mark2x
    Vuoto ma esistente... e se l'utente non si autentica, tale variabile non viene settata. Quindi non ci vedo tanta differenza...
    ho detto quello che farei io, e non quello che tu credi sia sufficiente fare.

    Parlando di sicurezza ... ovviamente.... basta vedere l'uso del $_REQUEST per valutarne il livello.




    edit: ... gia' che ci siamo. qualcuno e' piu' diffidente di me.

    http://forum.html.it/forum/showthrea...hreadid=897953

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.