MySQL Injection
Input velden zijn leuke velden voor "wannabee hackers", zeker als deze zondermeer in de query worden over genomen:
Een simpele login query als voorbeeld:
Code (php)
1
2
3
2
3
<?php
$query = "SELECT username, password FROM users WHERE username='".$_POST[ 'username']."';";
?>
$query = "SELECT username, password FROM users WHERE username='".$_POST[ 'username']."';";
?>
Stel nu dat de gebruiker in het 'username' veld het volgende invult:
a' OR '1'='1
dan onstaat de volgende query:
Code (php)
1
2
3
2
3
<?php
$query = "SELECT username, password FROM users WHERE username='a' OR '1'='1';";
?>
$query = "SELECT username, password FROM users WHERE username='a' OR '1'='1';";
?>
Afhankelijk van de maniet van afhandelen hoeft dat geen verelende gevolgen te hebben, maar zo iets wil je gewoon niet, daar voor is de functie: mysql_real_escape_string() bedacht:
Code (php)
1
2
3
2
3
<?php
$query = "SELECT username, password FROM users WHERE username='".mysql_real_escape_string($_POST[ 'username'])."';";
?>
$query = "SELECT username, password FROM users WHERE username='".mysql_real_escape_string($_POST[ 'username'])."';";
?>
« vorige pagina | volgende pagina »