Kapitel 24
Datenbanken
662
Die WHERE-Klausel
ist immer wahr, weil
1 immer gleich 1 ist. Deshalb werden alle Zeilen der Tabelle ausgege-
ben, obwohl dieses eigentlich verhindert werden soll.
Einen solchen Angriff nennt man SQL-Injection, weil heimlich SQL-Code in das System
geschmuggelt und zur Ausführung gebracht wird.
Wenn Sie auf die
format()-Methode verzichten und stattdessen – wie im letzten Abschnitt
beschrieben – die Fragezeichen-Platzhalter verwenden, sind Sie auf der sicheren Seite.
24.6 Online-Redaktionssystem mit Datenbankanbindung
Als Beispiel für ein Datenbank-gestütztes Python-Programm entwickeln wir nun ein
Online-Redaktionssystem. Stellen Sie sich folgende Situation vor:
Ein Team von Redakteuren möchte gemeinsam ein Online-Magazin gestalten. Das Online-
Magazin besteht aus einer öffentlich zugänglichen Webseite mit verschiedenen aktuellen
Artikeln (Beiträge). Abbildung 24.3 zeigt ein Beispiel.
Abb. 24.3: Beispiel für ein automatisch erstelltes Online-Magazin
name = "Anonym" OR "1" = "1"
663
24.6
Online-Redaktionssystem mit Datenbankanbindung
Jedes Mitglied der Redaktion kann sich über ein Online-Formular (Webseite im WWW) in
das System einloggen und hat dann die Möglichkeit, neue Beiträge in das Journal einzufügen
– sonst nichts. Er oder sie kann z.B. nicht Artikel anderer Autoren verändern oder löschen.
Beim Login werden Name und Passwort abgefragt (siehe Abbildung 24.4).
Abb. 24.4: Formular für das Login eines Redakteurs
Nach erfolgreichem Login gelangt ein Redakteur zu einer Webseite, auf der man über ver-
schiedene Eingabefelder folgende Aktionen ausführen kann (siehe Abbildung 24.5):
Abb. 24.5: Webseite mit Formular für einen Redakteur, der sich gerade eingeloggt hat

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.