Wat is een SQL Injection Attack / Kwetsbaarheid?
Deze FAQ antwoord was geschreven door k4thryn:
Een SQL injection kwetsbaarheid kan gebeuren wanneer een slecht geschreven programma maakt gebruik van de gebruiker verstrekte gegevens in een database query zonder eerst valideren van de invoer. Dit is meest vaak gevonden binnen webpagina's met dynamische inhoud. Er zijn een aantal uitstekende tutorials en beschrijvende artikelen over dit onderwerp, evenals vele kwetsbaarheid postings voor verschillende toepassingen van volledige openbaarmaking websites.
Een eenvoudig voorbeeld van SQL-injectie is een eenvoudige HTML-formulier login waarin u een gebruikersnaam en wachtwoord:
<form method="post" action="process_login.php"> <input type="text" name="username"> <input type="password" name="password"> </ form>
Gezien dit fragment van HTML, kan men afleiden dat de makkelijkste (en slechtste) manier voor het script "process_login.php" aan het werk zou zijn voor het bouwen en uitvoeren van een database query die er als volgt uitziet:
"SELECT id UIT logins WHERE username = '$ username' en wachtwoord = '$ password' ";
Onder deze omstandigheden, indien de variabelen "$ username" en "$ password" zijn direct overgenomen van de gebruiker van de input, de login-script kan gemakkelijk worden misleid om te geloven dat een geldig wachtwoord is verstrekt door het spelen met de syntax van de SQL-instructie. Stel de volgende string zijn als het wachtwoord:
'Of''='
en we gaven "Bob" als gebruikersnaam. Wanneer de variabelen worden geïnterpoleerd, de query hierboven zou er zo uitzien:
"SELECT id UIT logins WHERE username = 'bob' en wachtwoord =''of''='';
Deze zoekopdracht geeft een rij, omdat de laatste zin:
... of''=''
zullen altijd evalueren op true (een lege string is altijd gelijk aan een lege string).
Preventie van SQL injectie aanvallen
De meest voorkomende methoden om te voorkomen dat dit soort van SQL injectie vunerability zijn om na te gaan of de gebruiker input voor gevaarlijke tekens als single-quotes, en bereid met behulp van verklaringen, die vertellen de database precies wat hun te wachten voordat een gebruiker verstrekte gegevens te kunnen verwerken.
|






