Hoe kun je dit tegengaan?
Hoe kan je dit nu tegengaan?:
Er zijn verschillende mogenlijkheden om het SQL-injection zo veel mogenlijk tegen te gaan.
Ik zal er even 2 toelichten, één ervan zijn de functies mysql_escape_string, mysql_real_escape_string en strip_slashes, en de ander is het filteren van gegevens.
Het nakijken van gegevens door middel van de bovenstaande functies werkt goed onder de volgende functie:
Code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
function quote_smart($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1") {
return mysql_escape_string($value);
} else {
return mysql_real_escape_string($value);
}
}
?>
function quote_smart($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1") {
return mysql_escape_string($value);
} else {
return mysql_real_escape_string($value);
}
}
?>
Hierdoor wordt je verstuurde waarde goed gecontroleerd op tekens die er niet thuishoren.
Een andere manier van tegengaan is het filteren van gegevens, alhoewel dat niet werkt bij bijvoorbeeld het nakijken van gebruikersnamen, maar wel bij keuzenlijsten.
Stel je een formulier voor met een keuzelijst van prijzen. Je kunt bijvoorbeeld kiezen tussen een tegoedbon van 10€, 25€, 50€ en 100€. Nu kun je dit controleren in php:
Code:
Code (php)