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

    Protezione maggiore per area riservata

    Salve a tutti,
    ho provato a leggere un po di post relativi alla protezione di aree protette, e ho trovato 2 modi
    di protezione per i dati e le pagine di un classico sito:

    1. controllo dei 2 campi di un form tipo USER e PASSWORD con verifica di corrispondenti in un database access dei 2 campi: se trova uguali porta una sessione-relativa allo stato di TRUE.

    2. protezione del database con password.

    Io uso il primo metodo senza proteggere il file del database con password.

    Visto che sono stato visitato da un cosidetto "hacker" in cui mi dice che la mia protezione è troppo semplice ed è facile bucarla.
    Non capisco come si può entrare in una sessione pur non conoscendo la password, se lo stato di TRUE viene solo da un confronto positivo dei campi inviati dall'utente con il DB.

    Volevo chiedere cosa posso fare per aumentare la sicurezza.
    Proteggere tutti i file del db con la password?
    In questo caso non serve + il controllo di password per la sessione?

    Se le mie richieste sono impegnative potete indicatemi un sito o altro per capire di + sull'argomento.
    Grazie.
    grario

  2. #2
    Ti sei protetto dalla SQL Injection?

  3. #3
    Ciao Michele e grazie per la celere risposta.
    Non conosco quello che mi scrivi, se saresti così gentile di informarmi che cos'è la SQL Injection
    e come proteggersi, o indicarmi dove trovare risorse in merito.
    E' una cosa nuova? Oppure è sempre stata presente in ASP (se di solo linguaggio ASP si tratta)
    grario

  4. #4
    Trovi tutte le spiegazioni che vuoi facendo una semplice ricerca su google.
    Comunque devi fare semplicemente dei replace.
    In sostanza devi fare:
    codice:
    username=replace(request.form("username"),"'","''")
    password=replace(request.form("password"),"'","''")
    in modo che non sia più possibile usare la SQL Injection.
    Guarda questo esempio.

  5. #5
    Grazie, ti posto il mio codice normalmente usato, è impostato in modo diverso ma dovrebbe già avere la protezione, oppure no:
    codice:
    fusername = Trim(Request.Form("fusername"))
    fpass = Trim(Request.Form("fpass"))
    
    fusername = Replace(fusername,"'","'")
    fpass = Replace(fpass,"'","'")
    
    sql = "SELECT * FROM ammin WHERE username ='"&fusername&"' AND prpw ='"&fpass&"'"
    Set objRs = Server.CreateObject("ADODB.Recordset")
    set objRs = objConn.Execute(sql)
    Inoltre ho letto il tuo link ma è complicato, per esempio si consiglia di usare lo "stored procedure".
    Cosa sarebbe?
    grario

  6. #6

    RISOLTO TUTTO

    Ho capito che inserendo caratteri strani diventano script per la funziona SQL,
    esempio: basta inserire
    "' OR ''='"
    oppure
    ' OR ''='

    e la query cerca il nome oppure tutti i nomi del db, pertanto trova il primo e lo accetta per aprire la sessione.
    La soluzione è il rimpiazzo dei simboli.
    Posto il CODE corretto per chi avesse bisogno:
    codice:
    Function FixSQL(stringa)
    stringa = Replace(stringa, "'", "''")
    stringa = Replace(stringa, "%", "[%]")
    stringa = Replace(stringa, "[", "[[]")
    stringa = Replace(stringa, "]", "[]]")
    stringa = Replace(stringa, "_", "[_]")
    stringa = Replace(stringa, "#", "[#]")
    FixSQL = stringa
    End function
    fusername     = fixsql(request.form("fusername"))
    fpass         = fixsql(request.form("fpass"))
    
    sql = "SELECT * FROM tabella WHERE username='"&fusername&"' AND prpw='"&fpass&"'"
    set objRs = objConn.Execute(sql)
    Sono molto felice di aver risolto il problema merito a michele.santoro che ringrazio moltissimo.
    Saluti.
    grario

  7. #7
    Ho letto solo ora i tuoi post e sono contento che tu abbia risolto.

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.