Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Controllo dati inseriti in campi di testo
martedì 10 febbraio 2009 - 18.05
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
mar 10 feb 2009 - 18:05
Salve, ho usato una funzione che mi controlla che all'interno dei dati inseriti nelle mie textbox non vi siano caratteri che potrebbero essere usati per un SQL Injection o Cross site scripting XSS
Però la forma in cui l'ho scritta, sebbene funzioni perfettamente, non mi sembra elegante.... si può scrivere in modo più compatto e pulito ?
ecco il codice usato
*******************************************
Public Function DataInjectionControl(ByVal strDati As String) As Boolean
DataInjectionControl = False
If InStr(strDati, "'") > 0 Or InStr(strDati, ",") > 0 Or InStr(strDati, ".") > 0 Or InStr(strDati, ";") > 0 Or InStr(strDati, "delete ") > 0 Or InStr(strDati, "truncate ") > 0 Or InStr(strDati, "alter ") > 0 Or InStr(strDati, "drop ") > 0 Or InStr(strDati, "--") > 0 Or InStr(strDati, "<script>") > 0 Or InStr(strDati, "=") > 0 Or InStr(strDati, "<") > 0 Or InStr(strDati, ">") > 0 Or InStr(strDati, "+") > 0 Or InStr(strDati, "-") > 0 Or InStr(strDati, "*") > 0 Or InStr(strDati, "(") > 0 Or InStr(strDati, ")") > 0 Then
DataInjectionControl = True
End If
End Function
*******************************************
Grazie
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
mar 10 feb 2009 - 19:03
A parte il fatto che, al posto dell'operatore OR, avrei usato l'operatore ORELSE, il quale alla prima occorenza vera non avrebbe neanche valutato le successive.....
A sto giro non accetto che qualcuno mi dica che non è il caso di scomodare le Regex
Per l'appunto.....questo è il giusto caso per l'utilizzo delle Regular Expression...... cerca sulla rete un pò di documentazione a riguardo e se poi, hai bisogno di più info, fatti sentire.
Facci sapere....
Ciao.
balfaz
Profilo
| Expert
726
messaggi | Data Invio:
mar 10 feb 2009 - 19:16
perchè non provi con il controllo RegularExpressionValidator, è fatto a posta per questo lavoro
guarda questo link, e leggi in questo ordine.
http://www.devhood.com/Tutorials/tutorial_details.aspx?tutorial_id=46
http://msdn.microsoft.com/en-us/library/ms972966.aspx
La prima caratteristica che devi implementare per evitare il SQLinjection è quella di evitare di passare i valori dei campi direttamente di un textbox, textarea, o querystring (es. SELECT * FROM MIATBL WHERE CAMPO = '" & TEXTBOX1.text & "'") <- Sbagliato
devi usare i parametri per passare i valori, che sono un po più sicuri.
Se lo stai già facendo ben per te, altrimenti pensaci.....comunque la validazione dei campi e già l'inizio
"Che in questo 2009 i nostri codici possano sconvolgere il mondo."
balfaz
Profilo
| Expert
726
messaggi | Data Invio:
mar 10 feb 2009 - 19:18
OOOooops!, se vede che mi metto sempre troppo tempo in rispondere
"Che in questo 2009 i nostri codici possano sconvolgere il mondo."
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
mar 10 feb 2009 - 19:37
Sto già usando i validator control per verificare se i dati sono numerici, se sono diversi da stringa vuota e via dicendo...insieme all'istruzione Page.isvalid ...
Ho usato il CustomValidato Control per alcuni campi tipo la email, che mi va a richiamare una funzione ah hoc....
però per certe cose, tipo la famosa stringa " ' or 1=1 --' " stavo gestendo tutto via codice con una funzione ad hoc che nel mio caso avrebbe anche il compito di avvertire l'utente che sono stati inseriti caratteri non consentiti nonchè scrivere un log con l'ip di chi ha tentato di passare qualcosa del tipo "DROP TABLE Ecc.ecc."
Ad ogni modo volevo avere una e una sola funzione, richiamabile da dovunque, all'interno di una classe che mi fa questo lavoro senza i validator control che uso solo per cose di base...non so se faccio bene o male...
Sul Regex non c'ho capito nulla.... comunque hai ragione sull' ORELSE
Penso però di avere fatto un codice migliore ....
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !