Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Autenticazione: Sicurezza / Funzionalità

    Ciao a tutti,
    vorrei esporvi un problema.

    Sto progrttando un portale che conterrà news, forum, gestione degli utenti con friends list, favourites ed altre cose meno importanti.
    I problemi che mi pongo sono fondamentalmente sulla sicurezza.

    Allora, secondo il mio parere, un sito per essere di comoda consultazione, non deve richiedere ad ogni accesso l'utente e la password (tipico esempio sono la stragrande maggioranza dei forum che ti chiedono il login e suppongo abbiano un expire di giorni se non mesi).
    Essendo questo portale basato sulle news, l'apertura e la chiusura del sito è frequente, quindi non è utilizzabile la sessione con tempo scadenza 0 (scade quando si chiude il sito).

    Ora passo al lato pratico.

    Le mie idee
    1. Memorizzare user e pass criptate in un cookie.
    1R. Il cookie potrebbe essere comodamente sniffato e riprodotto.
    2. Memorizzare in un cookie un ID Sessione e da li recuperare user e pwd (Idea presa da un articolo di questo sito)
    2R. Come sopra, basterebbe sniffarlo...

    Gli esempi
    1. Come dicevo, la quasi totalità dei forum fa questa cosa, ho dato un'occhiata al codice della "DevBB" ma non sono riuscito a raccapezzarmi (Qui a lavoro non posso impegnarci troppo tempo).

    Considerazioni
    Funzionamento del controllo user e pass: Passaggio da client a server di dati necessari all'autentificazione.
    Ora mi chiedo:
    - esiste un metodo sicuro al di fuori di SSL?
    - il metodo più sicuro sarebbe far effettuare il login ad ogni visita ed utilizzare le sessioni (magari su DB)?

    Vi ringrazio per la pazienza : P e spero che possa essere uno spunto per un 3d interessante.


    P.S. Ho provato a fare una ricerca nel forum ma non ho trovato nulla che soddisfasse la mia necessità.
    Horazon.

  2. #2
    Il metodo che preferisco io è questo:
    crei una tabella degli utenti con i campi(id,user,pass,datadinascita,ecc)
    e questa ti serve per far registrare gli utenti e fare i controlli sul user e pass, per una maggiore sicurezza la pass la devi inviare in formato md5.

    Poi ti crei un'altra tabella con id,id_user,id_sessione.

    quando l'utente fa il login facciamo che manda le variabile con il metodo post.
    Tu devi fare un primo controllo nella tabella degli utenti in questo modo.
    //Ti prendi il nome
    $nome=$_POST['user'];
    //ti prendi la pass in formato md5
    $pass=md5($_POST['pass']);
    //ti connetti al database
    $db=mysql_connect("host","user","pass");
    //selezioi il database
    mysql_select_db("nome_database",$db);
    //crei la query per vedere se user e pass sono corretti
    $query="Select * from tabella_utenti where user='$nome' and pass='$pass';
    //applichi la query
    $result = mysql_query($query,$db);
    //se il risultato è = 1 significa che user e pass sono corretti
    if(mysql_num_rows($result)==1){
    //ti prendi l'id dell'utente
    $idu=mysql_result($result,0,"id");
    //fai partire la sessione
    session_start();
    //ti prendi l'id di sessione
    $ids=session_id();
    //ceri la query per inserire tutto nel database delle sessioni
    $query="insert into tabella_sessioni (id_user,id_session)values('$idu',$ids)";
    //applichi la query
    $result = mysql_query($query,$db);
    }else{
    echo"utente non autentificato";
    }
    questo è il file per fare il login
    Adesso devi creare un file per vedere se sei autentificato

    //apri la sessione
    session_start()
    //ti prendi l'id di sessione
    $ids=session_id()
    //ti connetti
    $db=mysql_connect("host","user","pass");
    //selezioi il database
    mysql_select_db("nome_database",$db);
    //crei la query per catturare l'id registrato
    $query="Select * from tabella_sessioni where session_id='$ids'";
    //applichi la query
    $result = mysql_query($query,$db);
    $idu=mysql_result($result,0,"id_user");
    //se l'utente è autentificato
    if(mysql_num_rows($result)>0){
    //creo una query e mi prendo il nome dell'utente
    $query="Select * from tabella_utenti where id='$idu'";
    //applico la query
    $result = mysql_query($query,$db);
    $nome=mysql_result($result,0,"user");
    echo"Ciao $nome!!!";
    }else{
    die("non hai i permessi per accedere a questa pagina.
    }


    per fare il logout basta che crei una pagina del genere

    //apri la sessione
    session_start()
    //ti prendi l'id di sessione
    $ids=session_id()
    //ti connetti
    $db=mysql_connect("host","user","pass");
    //selezioi il database
    mysql_select_db("nome_database",$db);
    //crei la query per catturare l'id registrato
    $query="delete * from tabella_sessioni where session_id='$ids'";
    //applichi la query
    $result = mysql_query($query,$db);


    Credo che dovrebbe funzionare.Ci può essere qualche errore perchè te l'ho fatto adesso e non l'ho provato.

  3. #3
    Ok, ma in questo modo, non è come passare direttamente user e pass?
    In realtà passi l'id sessione, però se fa riferimento ad un utente già loggato...
    Horazon.

  4. #4
    Originariamente inviato da Horazon
    Ok, ma in questo modo, non è come passare direttamente user e pass?
    In realtà passi l'id sessione, però se fa riferimento ad un utente già loggato...
    Se l'utente già è loggato il sistema di login lo riconosce.
    Questo avviene in questa riga:
    codice:
    $query="Select * from tabella_sessioni where session_id='$ids'"; 
    //applichi la query 
    $result = mysql_query($query,$db); 
    $idu=mysql_result($result,0,"id_user"); 
    //se l'utente è autentificato 
    if(mysql_num_rows($result)>0){
    Poi se tu vuoi puoi recuperare dall id di sessione tutto il profilo dell'utente.

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.