Regnery.net Internet

HTML CSS PHP MYSQL JQuery SEO – internetoplossingen

SQL injection

Een gat in je beveiliging van je site ontstaat als je de input van je gebruikers van je site niet controleert. Een hacker krijgt vrij spel als je bepaalde regels niet in acht neemt. Een gevaar vormt SQL injection.

SQL injection

Stel je hebt een regel met (SELECT gebruiker FROM tabel WHERE password=’$password’); opgesteld in PHP. Je controleert vervolgens niet de input van je gebruikers, want je bent goed van vertrouwen. Als een hacker vervolgens aan de informatie OR 1=1 toevoegt, dan is de hacker binnen. Een andere mogelijkheid is dat een hacker de code DROP TABLE table toevoegt aan je code. In dat geval ben je de tabel kwijt met gegevens.

Kortom, geen leuk vooruitzicht als je dit weet. Maar de vraag is hoe voorkom je dit?

Manier van schrijven van de sql regel

Stel je schrijft een voorwaarde in SQL met WHERE password = $password. Als een hacker OR 1=1 toevoegt, is de voorwaarde waar. Heb je de site niet goed beveiligd, dan kan de hacker naar wens de informatie uit de tabel selecteren. Om deze manier van hacken te voorkomen, dien je twee zaken goed in acht te nemen.

  1. Allereerst controleer je de input in een SQL regel. Als je een INSERT regel opstelt, gebruik dan mysql_real_escape_string(); als functie om de waarde die je wilt invoegen in de tabel van vreemde tekens te ontdoen.
  2. Een tweede mogelijkheid is om je WHERE selectie anders op te schrijven. Je kunt ook opschrijven WHERE password=’$password’ als selectievoorwaarde. Als een hacker nu OR 1=1 toevoegt aan de SQL regel, dan is dit niet langer een tweede voorwaarde waarnaar je pagina kijkt. Als het ware oefent de SQL nu uit WHERE password=’$password OR 1=1’ als selectiemiddel. Datgene wat de hacker toevoegt, vormt nu een onderdeel van de eerste voorwaarde. En de uitkomst van deze voorwaarde is niet langer standaard true.