Salve ragazzi,
nel login e nella registrazione voglio impedire a tutti i costi le SQL injection e tutti i tipi di attacchi (in questo caso parliamo di sql injection).
Nel login sto filtrando l'username e la password cosi:
$username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
Tolti gli spazi all'inizio e alla fine ->
$username = ereg_replace("[^A-Za-z0-9_\-\./, ]", "", $username);
Tolti i caratteri dannosi e sostituiti con uno spazio ->
$username = mysql_real_escape_string($username);
Filtrati i caratteri dannosi mysql.
$username = trim(filter_var($username, FILTER_SANITIZE_SPECIAL_CHARS));
filtro ancora i caratteri dannosi.
Adesso dovrei aver filtrato correttamente tutti i caratteri dannosi, ma osservando la mia query decido di provare a mettere al posto della password o dell'username un po' di codice sql:
quindi inserisco: "1" OR "1" = "1"
secondo i mie filtraggi tutti quei caratteri li avrei dovuti RIMUOVERE, ma se li ho rimossi, per quale motivo sul controllo mi da Access denied come se stessi riuscendo ad entrare nel database ma netsons mi blocca? Dovrei visualizzare il messaggio classico di errore che mi appare quando sbaglio la password no? Esistono dei filtraggi migliori?
Potete testare anche voi:
http://www.virtualdimension-studios.com/
Un'altra cosa, supponiamo che il nome utente sia: ciao e la password ciao
se io provo ad inserire username: "ciao e password: ciao
dovrei riuscire a loggare correttamente se filtra il " no? Invece mi da password errata... ciò non succede con = ad esempio.. se metto username: =ciao password: ciao, mi logga comunque..
Grazie.