Daten aus Datenbank auslesen

Beispiel 1

Beispiel:Daten aus der Datenbank sollten als JSON formatiert zum Browser gesendet werden.

In der folgenden Version entstanden Fehler, weil in der Datenbank typische Zeichen einer JSON-Strukur gepeichert waren.

Vorher:
...
if ($kurse = kurse(NULL, "visible DESC, fullname ASC")) {
  foreach ($kurse as $kurs) {
    $res .= '"' . $kurs->id . '": {';
    $res .= '"name":"'. $kurs->name . '",';
    $res .= '},';
  };
  $res = rtrim($res,',');
  $res .= '}]';
};
...
Danach:

Die Funktion addslashes hat die unerwünschten Zeichen maskiert.

...
if ($kurse = kurse(NULL, "visible DESC, fullname ASC")) {
  foreach ($kurse as $kurs) {
    $res .= '"id":"'. $kurs->id . '",';
    $res .= '"name":"'. addslashes($kurs->name) . '",';
    $res .= '},';
  };
  $res = rtrim($res,',');
  $res .= '}]';
};
...

Kommentare in SQL (PHP)

Quelle/Siehe auch:
 https://cwe.mitre.org/data/definitions/20.html

Folgendes Szenario:

$birthday = $_GET['birthday'];
$homepage = $_GET['homepage'];
echo "Birthday: $birthday<br>Homepage: <a href=$homepage>click here</a>"

Auch wenn das Format des Geburtstages auf Zahlen und Bindestriche/Minus-Zeichen geprüft wird. Die Ein- und Ausgabe sähe dann wie folgt aus:

1957-10-04

Was aber, wenn die Länge nicht geprüft wird und die Eingabe ungeprüft so in ein SQL-Statement eingebaut wird:

1957-10-04--