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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}
}

?>



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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$valid_prices
= array(10, 25, 50, 100);
if(!in_array($_GET['price'], $valid_prices)){
   die("Hack attempted!");
}
else{
   // ga door met de code
} ?>

« 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.