asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 5900
ASPCode.it - Store

  > > Tips

Controllo case-sensitive della password
di Antonio Paterno

Data di pubblicazione: 02/01/2002        Voto della community: 5,00 (Votanti: 2)

Ecco una tipica FORM per l'input di una username e di una password:

Username:pippo
Password:********  (topolino)
Ciccando sul bottone <I n v i a>, richiamiamo il modulo in ASP che fa il Request dei campi suddetti:

<%
strUser = Request.Form("username")
strPass = Request.Form("password")

strSQL = "SELECT [user], [pass] FROM <table>" &_
      " WHERE [user] = '" & strUser & "'" &_
      " AND [pass] = '" & strPass & "'"

Set objRecordSet = objConnection.Execute(strSQL) 'esegue la query
If objRecordSet.EOF Then
  Response.Write "Accesso negato" 'nessun record trovato
Else
  Response.Write "Bentornato" 'user e password corrette
End If
%>

Ma la situazione non ci soddisfa.
L'utente potrebbe scrivere "pippo", oppure "Pippo" o ancora "PIPPO" (o altre combinazioni di maiuscole e minuscole) come <username> (lo stesso dicasi per la <password>) e il risultato sarebbe sempre lo stesso:

  Response.Write "Bentornato"

Questo perché per default l'SQL effettua i confronti in modo case-unsensitive (cioè considerando uguali le maiuscole e le minuscole).

Come fare allora per rendere ancora più sicuro l'accesso al nostro sito (o sezione di esso)?
Con l'ausilio della funzione StrComp(). Questa funzione è spiegata dettagliatamente nell'articolo "I segreti delle funzioni stringa, parte seconda".

Ecco come il nostro codice ASP risulterà modificato:

<%
If objRecordSet.EOF Then
  Response.Write "Accesso negato" 'nessun record trovato
Else
  'Fa un controllo case-sensitive
  If (StrComp(objRecordSet("user"), strUser,0) = 0) AND _
    (StrComp(objRecordSet("pass"), strPass,0) = 0) Then
    'la user e passord sono perfettamente identiche
    Response.Write "Bentornato"
Else
  Response.Write "Accesso negato. Controlla le maiuscole/minuscole"
End If
End If
%>

In questo modo, se nella nostra tabella avessimo:
- come username: Pippo
- come password: Topolino

all'utente che digitasse:
- come username: pippo
- come password: topolino

verrebbe negato l'accesso.

Pensate che, per ripristinare un confronto case-unsensitive (che non fa cioè differenza tra maiuscole e minuscole), basterebbe cambiare il terzo parametro della StrComp da 0 (zero) ad uno!

Alla prossima!




Utenti connessi: 5900