| MySQL injections |
|
| Written by Quzart | |
| Friday, 22 February 2008 14:14 | |
|
Ook dit is een manier waarop veel websites gehacked worden, dus weer ff opletten bij het PHP scripten. Wat is MySQL injectionDe titel zegt het al een beetje. Iemand van buiten af kan MySQL injecten in je query's en zo dus vanalles met je database kan doen wat je waarschijnlijk niet zo leuk vind. Voornamelijk gaat het om de functies mysql_query(), als een query verkeert wordt samengesteld dan kan het verkeert gaan. Hoe werkt hetStel dat je bijvoorbeeld een gebruiker wilt laten inloggen:
<?phpBedoelingGewoonlijk zou iemand gewoon kunnen inloggen (bijvoorbeeld de gebruiker 'koekjes' met het wachtwoord 'monster') en zou de query er zo uit zien:
SELECT `id` FROM `users` WHERE `username` = 'koekjes' AND `password` = 'monster' LIMIT 1;
InjectionWat minder is als iemand zou invullen bij _GET[username]:
admin' --
Nou wordt dit de query:
SELECT `id` FROM `users` WHERE `username` = 'admin' --' AND `password` = 'monster' LIMIT 1;
Alles achter -- wordt in MySQL gezien als commentaar, de eigenlijk query is dus:
SELECT `id` FROM `users` WHERE `username` = 'admin'
Niet al te best dus, er wordt niet eens meer naar het wachtwoord gekeken! Hoe tegen te gaanJe moet gewoon ALLE user-input escapen:
<?phpNu kunnen MySQL injections niet meer. Stel dat iemand weer "admin'--" dit bij _GET[user] invult, dan wordt de query:
SELECT `id` FROM `users` WHERE `username` = 'admin\' --' AND `password` = 'monster' LIMIT 1;
Oftewel er wordt nu op de gebruikersnaam: "admin' --" gezocht, en de gebruiker kan dus niet meer MySQL injections uitvoeren. |
|
| Last Updated ( Friday, 22 February 2008 14:58 ) |