dedlfix: PHP und MySQL sicher programmieren

Beitrag lesen

echo $begrüßung;

Das fällt mir als erstes das Thema SQL-Injektion ein.

Es muss nicht immer gleich das "böse" SQL-Injection herangezogen werden. Das simple Eingeben eines ' (z.B. in einem Namensfeld: O'Conner) ist noch keine SQL-Injection und erzeugt trotzdem einen Fehler, wenn es nicht maskiert wurde. Den Handbuch-Link zum Thema hat ja schon Ashura gepostet.

function is_pos_id($id=0) {
   if(preg_match('/[1][0-9]*$/', $id)) {
      return true;
   }
   return false;
}

Diese Funktion erscheint mir recht überflüssig. Im Allgemeinen wird bei einer ID gern ein numerischer Spaltentyp verwendet. Es reicht ein is_numeric(). Ob da eine führende 0 oder sogar Nachkommastellen eingegeben wurden ist

$sql = "SELECT spalten FROM tabelle WHERE id=" . $_GET['id'];

bei dieser Art von Abfrage nicht relevant. Letzlich wird die Abfrage entweder nicht ausgeführt oder liefert eine leere Ergebnismenge. Da sehe ich kein Sicherheitsrisiko, abgesehen von der Möglichkeit, dass das Konzept nicht stimmen könnte, zu dem diese Abfrage gehört.

echo "$verabschiedung $name";


  1. 1-9 ↩︎