Originariamente inviato da galamarco
la tua variabile "$passw" non è altro che una stringa di testo, definita tramite il form che può contenere qualsiasi cosa che mai verrà interpretata.
PHP la concepisce come un ammasso di caratteri (nessuno mi uccida per questa brutale definizione!

) e se ne sbatte del senso che questi possono avere.
L'sql injection è tutt'altro caso.
Si tratta di una variabile, non controllata per il suo contenuto, che in un certo punto di una query la interrompe e la trasforma in tutt'altro intervenendo quindi sull'SQL. (non a caso il nome "
sql injection")
Codice PHP:
$MySql = "SELECT nome FROM tbl_persone ";
$MySql .= "WHERE username = '".$_POST['username']."' AND password = '".$_POST['password']."'";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
if (!$rs) {
//accedi
}
Questo è codice ampiamente vulnerabile perchè in base a cosa scrive l'utente nei due campi (username e password) la query assume una forma o l'altra.
Se scrivessi ad esempio come password quanto segue, probabilmente accederei comunque.
codice:
' OR password != ''
Resta però il fatto che sia php, sia chi programma, sia chi gestisce i server, a questi aspetti ci stanno sempre molto attenti. PHP ad esempio (salvo impostazioni contrarie sul server), quando vede un apostrofo lo trasforma sempre in \' così da inibirne la pericolosità ed evitare questi casi.
Un saluto,
Marco