Verifica Password con select su db Access

venerdì 10 novembre 2006 - 11.41

M@LKAV Profilo | Junior Member

ciao a tutti
sto facendo vari test e mi son reso conto che se nella login del mio programma
che contiente una select sulla tabella utenti per vedere se esistono o mone

se metto la stringa " a'or'A'='A mi apre cmq anche se nn e un utente valido

perche questo???
come posso intervenire???
un collega mi ha fatto notare che questo e una stringa che sia access che sql vedono come valida all'interno di una select con paramentro

thanks

Brainkiller Profilo | Guru

>perche questo???
>come posso intervenire???
>un collega mi ha fatto notare che questo e una stringa che sia
>access che sql vedono come valida all'interno di una select con
>paramentro

Questo è un problema di security e si chiama SQL Injection. Se tu nel codice spari delle query di questo tipo senza verificare l'Input:

"SELECT * FROM UTENTI WHERE Username='" + username + "' AND PASSWORD='" + password + "'"

può succedere che uno digiti quella stringa che ti ha dato il tuo collega od altre stringhe e possa entrare anche se l'utente non esiste, oppure cancellarti pezzi di database o tabelle, ecc.ecc. questo perchè tu non verifichi l'input e quindi username e password possono assumere valori diversi e modificarti la query.

Le tecniche sono varie, prima di tutto bisogna controllare l'input, magari sia client side (via javscript) che server side (con il codice .NET). Poi è buona cosa usare Query parametriche (facendo uso di OleDbParameter e SqlParameter), infine se il database te lo permette (es. se usi SQL Server) è buona cosa fare uso di Stored Procedure anch'esse parametriche.

Se vuoi documentart meglio cerca SQL Injection su Google.

Queste tecniche rendono il tuo codice più sicuro.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5