Hur du testar din egen webbserver mot mysql sårbarheter (8 / 9 steg)
Steg 8: Skyddas din kod
För att göra denna kod säkert, bara fly användare input. Detta kan göras, till exempel genom att använda metoden mysql_real_escape_string. En annan funktion kan vara addslashes. Så skulle en "säker" lösning med:
mysql_real_escape_string($_POST['email'])
Istället för
$_POST ['email']
Så detta är sista php-koden:
$query = "Välj * från 'användare' var 'email' = \'' .mysql_real_escape_string($_POST['email'])." \ "Och"lösenord"= \'' .md5($_post['password'])." \'';
Och beräknade frågan är:
VÄLJA * från 'användare' var 'email' = ' test OR 'id' = 1 eller 1 = \'' och "password" = "098f6bcd4621d373cade4e832627b4f6"
Så som ni kan se, den enkel anföres i strängen är nu flydde och inte längre slutar den mysql strängen. Detta orsakar frågan till söka för den följande email adressen:
test OR 'id' = 1 eller 1 = \ "
Och naturligtvis, detta kommer att misslyckas, eftersom det finns ingen matchande e-post i databasen.