Ciao,
volevo sapere se queste due funzioni possono bastare a verificare i dati in input nelle varie pagine asp
codice:Const Numero = 1 Const Testo = 2 Const Data = 3 Function checkVar(variabile, tipoDato, maxGrandezzaCampo) ' funzione per controllo variabili in base al tipo ' variabile - valore da controllare ' tipoDato - tipo del valore da controllare e può essere Numero - Testo - Data ' maxGrandezzaCampo - se numero il tipo di dato di variabile, se testo la lunghezza massima della stringa, se data "" ' se 0-200 un rage che deve contenere valore ON ERROR RESUME NEXT err.Clear 'varType https://stackoverflow.com/questions/3281355/get-the-type-of-a-variable-in-vbscript select case tipoDato case Numero 'controllo se la variabile e' un numero if isNumeric(variabile) then if maxGrandezzaCampo = vbInteger then variabile = CInt(variabile) if maxGrandezzaCampo = vbLong then variabile = CLng(variabile) if maxGrandezzaCampo = vbSingle then variabile = CSng(variabile) if maxGrandezzaCampo = vbDouble then variabile = CDbl(variabile) if maxGrandezzaCampo = vbCurrency then variabile = CCur(variabile) if maxGrandezzaCampo = vbByte then variabile = CByte(variabile) if Err.Number > 0 then checkVar = False else if VarType(variabile) = maxGrandezzaCampo then checkVar = True else if InStr(maxGrandezzaCampo,"-") > 0 then valTmp = split(maxGrandezzaCampo, "-") valoreMinimo = CLng(valTmp(0)) valoreMassimo = CLng(valTmp(1)) if (CLng(variabile) < valoreMinimo) OR (CLng(variabile) > valoreMassimo) then checkVar = false else checkVar = true end if else esitoOp "Valore maxGrandezzaCampo non valido","" end if end if end if else checkVar = false end if case Testo 'controllo se la variabile e' un testo if varType(variabile) = vbString then if len(variabile) <= maxGrandezzaCampo then checkVar = True else checkVar = False end if else checkVar = False end if case Data 'controllo se la variabile e' una data if isDate(variabile) then checkVar = true else checkVar = false end if end select err.Clear End Functionsecondo voi serve ancora usare le query parametriche, si possono ancora migliorare?codice:Function no_SQLinject(campo, valoriDaEscludere) 'Blocca tentativi di SQL injection 'campo valore da testare 'valoriDaEscludere caratteri o stringa da escludere dal controllo separati da | es "'|=|select" Stringa_originale = campo if InStr(valoriDaEscludere,"=") = 0 then myString = ReplaceAllByExpression(campo, "=", "") end if if InStr(valoriDaEscludere,"'") = 0 then myString = ReplaceAllByExpression(campo, "'", "") end if 'myString = ReplaceAllByExpression(campo, """", "") myString = ReplaceAllByExpression(campo, " OR ", "") myString = ReplaceAllByExpression(campo, " AND ", "") myString = ReplaceAllByExpression(campo, "--", "") myString = ReplaceAllByExpression(campo, ";", "") myString = ReplaceAllByExpression(campo, "SELECT", "") myString = ReplaceAllByExpression(campo, "INSERT", "") myString = ReplaceAllByExpression(campo, "UPDATE", "") myString = ReplaceAllByExpression(campo, "DELETE", "") myString = ReplaceAllByExpression(campo, "DROP", "") myString = ReplaceAllByExpression(campo, "UNION ALL", "") myString = ReplaceAllByExpression(campo, "GROUP BY", "") myString = ReplaceAllByExpression(campo, "HAVING", "") myString = ReplaceAllByExpression(campo, "ORDER BY", "") myString = ReplaceAllByExpression(campo, "XP_", "") myString = ReplaceAllByExpression(campo, "-SHUTDOWN", "") myString = ReplaceAllByExpression(campo, "\(", "") myString = ReplaceAllByExpression(campo, "\)", "") if InStr(valoriDaEscludere,">") = 0 then myString = ReplaceAllByExpression(campo, ">", "") end if if InStr(valoriDaEscludere,"<") = 0 then myString = ReplaceAllByExpression(campo, "<", "") end if if Stringa_originale = myString then no_SQLinject = myString else no_SQLinject = false end if end Function
saluti e grazie delle info

Rispondi quotando