Hur du testar din egen webbserver mot mysql sårbarheter (6 / 9 steg)
Steg 6: bakom kulisserna
Eftersom skriptet utgångar databasfrågan som används för att markera den rätta användaren, kan du se vad som händer bakom kulisserna. När du loggar in som admin följande fråga:
"Välj * från 'användare' var 'email' = \''. $_POST ['email']." \ "Och"lösenord"= \'' .md5($_post['password'])." \''
beräknas till:
"Välj * från 'användare' var 'email' = \'admin och"password"= \'' .md5 ("top hemliga lösenord som aldrig kommer att knäckas så fort")." \''
och sedan:
"Välj * från 'användare' var 'email' = \'admin och"password"= \'b655e3f4ae881514c4896b9cd707e4d2\''
och vad är skickade till mysql-databasen är:
VÄLJA * från 'användare' var 'email' = ' admin och "password" = "b655e3f4ae881514c4896b9cd707e4d2"
Så välj det bara en användare av sin e-postadress och lösenord. I detta fall, detta är säkert förvänta oss av e-validering. Den variabeln $_POST ['email'] är inte säkrade innan det är kopplat till frågan, så att vi kan tillföra en hel del onda saker här. Variabeln $_POST ['lösenord'] skickas till md5() innan dess concated till databasfrågan, så detta är "av misstag säker" eftersom md5() returnerar endast siffror och tecken och ingenting som kunde krascha vår fråga.