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

Discussione: Problemi Sql injection

  1. #1
    Utente di HTML.it L'avatar di Girogio
    Registrato dal
    May 2007
    Messaggi
    366

    Problemi Sql injection

    Salve ragazzi!!!
    Ho un piccolo problema con la mia pagina registrazione utenti!
    Il problema consiste nel controllare la sql Injection.
    Ho trovato veramente la valle sul forum riguardo a questo argomento.
    E' da un paio di giorni che leggo i vari casi ma non riesco a risolvere il mio dilemma.
    Io ho la pagina registrazione utente con campi, nel form, username, nome ed email.
    Bene, facendo un controllo inserendo la ' nel form non mi dà nessun errore ma mi appare la pagina (in serisci dati) esattamente come vorrei io ma se inserisco nel campo email (a' or '0'='0)
    mi dà pagina di errore.
    Ho provato con la funzione Fxsql con replace ma non riesco a farla funzionare nel mio codice...
    Vi posto una parte del codice che mi sembra essere quella incriminata, sperando che qualcuno di voi sappia darmi una mano d'aiuto.
    codice:
    MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
    If (Request.QueryString <> "") Then
      MM_editAction = MM_editAction & "?" & Request.QueryString
    End If
    
    ' boolean to abort record edit
    MM_abortEdit = false
    
    ' query string to execute
    MM_editQuery = ""
    %>
    <%
    ' *** Redirect if username exists
    MM_flag="MM_insert"
    If (CStr(Request(MM_flag)) <> "") Then
      MM_dupKeyRedirect="userEsiste.asp"
      MM_rsKeyConnection=MM_connRegistrazione_STRING
      MM_dupKeyUsernameValue = CStr(Request.Form("Email"))
      MM_dupKeySQL="SELECT Email FROM Login WHERE Email=& replace (MM_dupKeyUsernameValue,"'","''") & "'"
      MM_adodbRecordset="ADODB.Recordset"
      set MM_rsKey=Server.CreateObject(MM_adodbRecordset)
      MM_rsKey.ActiveConnection=MM_rsKeyConnection
      MM_rsKey.Source=MM_dupKeySQL
      MM_rsKey.CursorType=0
      MM_rsKey.CursorLocation=2
      MM_rsKey.LockType=3
      MM_rsKey.Open

    Grazie!
    Giorgio.

  2. #2
    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
    
    MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
    If (Request.QueryString <> "") Then
      MM_editAction = MM_editAction & "?" & Request.QueryString
    End If
    
    ' boolean to abort record edit
    MM_abortEdit = false
    
    ' query string to execute
    MM_editQuery = ""
    %>
    <%
    ' *** Redirect if username exists
    MM_flag="MM_insert"
    If (CStr(Request(MM_flag)) <> "") Then
      MM_dupKeyRedirect="userEsiste.asp"
      MM_rsKeyConnection=MM_connRegistrazione_STRING
      MM_dupKeyUsernameValue = CStr(Request.Form("Email"))
      MM_dupKeySQL="SELECT Email FROM Login WHERE Email='" & FixSQL(MM_dupKeyUsernameValue) & "'"
      MM_adodbRecordset="ADODB.Recordset"
      set MM_rsKey=Server.CreateObject(MM_adodbRecordset)
      MM_rsKey.ActiveConnection=MM_rsKeyConnection
      MM_rsKey.Source=MM_dupKeySQL
      MM_rsKey.CursorType=0
      MM_rsKey.CursorLocation=2
      MM_rsKey.LockType=3
      MM_rsKey.Open

  3. #3
    Utente di HTML.it L'avatar di Girogio
    Registrato dal
    May 2007
    Messaggi
    366
    Ciao Mems, come và.
    Ascolta, avevo già provato con la fixsql ma niente nn funge..
    ti posto l'errore che mi dà

    codice:
    Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
    [Microsoft][Driver ODBC Microsoft Access] Il campo "Mailing.username" non può contenere una stringa di lunghezza zero.
    Ma una domanda balorda.
    Ma questo codice
    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
    io devo sostituire stringa con i campi presenti nella tabella del db..giusto vero???
    Cmq in un caso o nell'altro nn funge.
    Grazie per l'aiuto Mems.

  4. #4
    Capisci l'errore cosa vuol dire?
    Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
    [Microsoft][Driver ODBC Microsoft Access] Il campo "Mailing.username" non può contenere una stringa di lunghezza zero.
    Vuol dire che il campo username della tabella mailing l'hai impostato in modo che non è possibile lasciarlo vuoto...
    Inoltre, il codice che hai mostrato non ha attinenza al problema evidenziato nell'errore...

  5. #5
    Utente di HTML.it L'avatar di Girogio
    Registrato dal
    May 2007
    Messaggi
    366
    Si lo sò che sono io che imposto il valore del campo, dalla struttura del database e che quel errore si riferisce a questo. Credevo che il valore deve stare per forza a "non consenti lunghezza zero".
    Il codice spedito non risulta attinente all'errore perchè è il codice da qui sono partito per poi crearmi la mia reale pagina registrazione.
    Altrimenti sarebbero stai visibili none db tabelle e quant'altro...io mi sto scervellando per non far entrare mal intenzionati nel mio db...io gli offro la chiave sul vassoio...

    Cmq ritornando al problema.
    Se io impostassi consenti lunghezza = 0 ai campi non ci sarebbe nessun problema ma rimane però il problema sql inj o no????
    Grazie

  6. #6
    Il problema SQL Injection lo risolvi con quella funzione.
    Fai passare i valori recuperati da FORM attraverso quella funzione, nel momento i cui devi integrarli nelle istruzioni SQL.

  7. #7
    Utente di HTML.it L'avatar di Girogio
    Registrato dal
    May 2007
    Messaggi
    366
    aLLORA Mems ci sono quasi. L'ultima cosa ti vorrei chiedere.
    Quindi ho messo, dal db, consenti lunghezza uguale 0 e sembra che il problema con ' o con a' or '0'='0 si sia risolto.
    Ora però anche se metto in tutti i campi per esempio gg mi accetta i dati.
    Io non vorrei questo ed ho pensato ad un controllo su tutti i campi come questo:


    codice:
    username = Request.Form("username")
    nome = Request.Form("nome")
    email = Request.Form("email")
    Set re = New RegExp
    re.Pattern = "^[\w\-\.]*[\w\.]\@[\w\.]*[\w\-\.]+[\w\-]+[\w]\.+[\w]+[\w $]"
    
    If Len(Trim(username)) = 0 Then
    Response.Write "<p align=""center"">Inserisci Il username</p>"
    ElseIf Len(Trim(nome)) = 0 Then
    Response.Write "<p align=""center"">Inserisci Il nome</p>"
    ElseIf re.Test(email) = False Then
    Response.Write "<p align=""center"">Inserisci il tuo indirizzo email</p>"
    Questo codice se lo posiziono prima della funzione fixsql non funziona poichè da quello che ho capito è il comando

    codice:
    '*** Redirect if username exists
    MM_flag="MM_insert"
    If (CStr(Request(MM_flag)) <> "") Then
      MM_dupKeyRedirect="userEsiste.asp"
    che mi controlla la compilazione dei campi.
    Quindi io penso, forse, il controllo dei campi lo devo inserire qui
    codice:
    If (CStr(Request(MM_flag)) <> "") Then
    Matri mi staiu confunnennu tuttu.
    Grazie per la pazienza!!!

  8. #8
    Utente di HTML.it L'avatar di Girogio
    Registrato dal
    May 2007
    Messaggi
    366
    Ragazzi mi potreste spiegare perchè questa funzione lato server non mi funonzia???
    Mi sfugge qualcosa....



    codice:
    <%
    Function IsMail(sEmail)
    	Dim objRegExp
    	Set objRegExp = New RegExp 
    	objRegExp.Pattern = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$" 
    	objRegExp.IgnoreCase = True 
    	IsMail = objRegExp.Test(sEmail)
    End Function 
    %>
    	
    	<%
    	DIM NewEmail
    NewEmail = Request.Form("EMAIL")
    privacy = Request.Form("privacy")
    
    if privacy &"[]" <> "[]" then
        'Apri connesssione!!!!!!!!!!!!!!!!!!!!!!
    E processo i dati...................
    Non mi funzione nel senso che anche se inserisco nel campo mial pippo mi accetta la scrittura e lo salva nel db..
    Grazie.

  9. #9
    Utente di HTML.it L'avatar di Girogio
    Registrato dal
    May 2007
    Messaggi
    366
    Buongiorno a tutti.
    La funzione fxsql sembra che funzioni...ma non ho capito, se folessi integrare un controllo mail lato server con una funzione RegExp come la devo richiamare.
    Help me! Ci ho sbattuto la testa tutta la notte ma non sono capace di fare un semplice loop che richiami i campi e li controlli.
    Una piccola dritta....
    Giorgio!

  10. #10
    Originariamente inviato da Girogio
    Ragazzi mi potreste spiegare perchè questa funzione lato server non mi funonzia???
    Mi sfugge qualcosa....



    codice:
    <%
    Function IsMail(sEmail)
    	Dim objRegExp
    	Set objRegExp = New RegExp 
    	objRegExp.Pattern = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$" 
    	objRegExp.IgnoreCase = True 
    	IsMail = objRegExp.Test(sEmail)
    End Function 
    %>
    	
    	<%
    	DIM NewEmail
    NewEmail = Request.Form("EMAIL")
    privacy = Request.Form("privacy")
    
    if privacy &"[]" <> "[]" then
        'Apri connesssione!!!!!!!!!!!!!!!!!!!!!!
    E processo i dati...................
    Non mi funzione nel senso che anche se inserisco nel campo mial pippo mi accetta la scrittura e lo salva nel db..
    Grazie.
    codice:
    <%
    Function IsMail(sEmail)
    	Dim objRegExp
    	Set objRegExp = New RegExp 
    	objRegExp.Pattern = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$" 
    	objRegExp.IgnoreCase = True 
    	IsMail = objRegExp.Test(sEmail)
    End Function 
    %>
    	
    	<%
    	DIM NewEmail
    NewEmail = Request.Form("EMAIL")
    if IsEmail(NewEmail) then
    privacy = Request.Form("privacy")
    
    if privacy &"[]" <> "[]" then
        'Apri connesssione!!!!!!!!!!!!!!!!!!!!!!
    E processo i dati...................
    end if

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.