SQL-Injection in de Where-clause

SQL-injection in de WHERE-clause:
We hebben het nu gehad over de injection in de Insert-clause, dat vaak op die manier misbruikt wordt. Nu ook even een injection op een totaal andere manier.

Stel je voor, er wordt bij een website een passwoord opgevraagd van een gebruiker door middel van een link, dit komt voor als vragen om problemen, maar schrik niet, dit komt toch nog vaak voor (op een dergelijke manier).

De php-code voor de opvraag-pagina:
Code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$SQL
= mysql_query("SELECT password_user FROM table WHERE naam_user = '{$_GET['naam_user']}'");
$data  = mysql_fetch_array($SQL);
echo $data['password_user'] . " hoort bij user: " . $_GET['naam_user'];
?>



Je ziet het waarschijnlijk al gebeuren, wat als we die $_GET-waarde gaan veranderen?
We maken eens een link waarbij we meerdere gebruikers op kunnen vragen.

Voorbeeld van normale link:

Code:
<a href="lookup.php?naam_user=pietje">
Bekijk password
</a>


Stel pietje wil erachter komen wat het password van gebruiker "Sinterklaas" is, dan kan hij dat als volgt teweten komen, middels de URL te veranderen in iets als:

Nieuwe, kwaadaardige URL:
lookup.php?naam_user=pietje%27+OR+naam_user+%3D+%27sinterklaas


Wat uitkomt is een query als deze:

Kwaadaardige query:
SELECT password_user FROM table
WHERE naam_user = 'pietje' OR naam_user = 'sinterklaas'


Nu kan pietje dus het password van gebruiker "Sinterklaas" achterhalen, iets waar die gebruiker niet blij mee zal zijn. Dit is ook een van de redenen waarom passwoorden het liefst gecodeerd opgeslagen moeten worden, maar ook dit als voorbeeld.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Hoe gaat SQL-Injection te werk?
  3. SQL-Injection in de Where-clause
  4. Hoe kun je dit tegengaan?

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.