faecher:informatik:oberstufe:datenbanken:projekt:dbphp:phppdo:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:datenbanken:projekt:dbphp:phppdo:start [25.11.2020 22:57] – [Dynamische Abfragen] sbelfaecher:informatik:oberstufe:datenbanken:projekt:dbphp:phppdo:start [26.04.2021 14:10] (aktuell) – gelöscht sbel
Zeile 1: Zeile 1:
-====== Zugriff auf Datenbanken mit PHP Data Objects (PDO) ====== 
  
-===== Verbindung aufbauen ===== 
- 
- 
-Eine Verbindung zur Datenbank kann wie folgt aufgebaut werden: 
-<code php>  
-$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); 
-</code> 
- 
-===== Einfache Abfragen ===== 
- 
- 
-Nachdem eine Verbindung zur Datenbank hergestellt wurde, können SQL Statements wie folgt ausgeführt werden: 
-{{ :faecher:informatik:oberstufe:datenbanken:projekt:dbphp:mysqli:auswahl_148.png|}} 
-<code php> 
-$sql = "SELECT vorname, name FROM doktoren"; 
-$query_rows = $pdo->query($sql); // liefert ein assoziatives array zurück. keys sind die feldnamen. 
- 
-foreach ($query_rows as $row) { 
-   echo $row['vorname']." ".$row['name']."<br />"; 
-} 
-</code> 
- 
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (A1) === 
- 
-Importiere die {{ :faecher:informatik:oberstufe:datenbanken:projekt:dbphp:phppdo:schule500_sus_keys.zip |Tabellen der Schuldatenbank}} in deine Übungsdatenbank. 
- 
-Frage die folgenden Infos in deinem PHP Skript ab und gib sie in einer HTML-Tabelle aus: 
- 
-  * Erstelle eine Klassenliste der 7a 
-  * Erstelle eine Liste aller Schüler, die Salvador Dali als Betreuer haben. 
-  * Wieviele Schüler befinden sich in der Jahrgangsstufe 10? 
-   
-===== Dynamische Abfragen ===== 
- 
-Mit über Formulare kann man nun auch Eingaben des Benutzers in Abfragen einbauen, auf diese Weise werden die Abfragen dynamisch.  
-<WRAP center  alert 90%> 
-Grundregekl der Webentwicklung: Vetraue keinem Datum, das dir ein Benutzer gibt. **Auf keinen Fall sollte man in einem produktiven System Benuitzereingaben direkt in SQL Statements übernehmen.**((https://www.ionos.de/digitalguide/server/sicherheit/sql-injection-grundlagen-und-schutzmassnahmen/))  
-</WRAP> 
- 
-Eine <wrap hi>**schlechte Idee**</wrap> ist es also, das naheliegende zu tun: 
- 
- 
-    Ausführen 
-    $ 
- 
-Dies funktioniert zwar, ist aber anfällig für sogenannte SQL Injections. Ein Angreifer kann über den GET-Parameter unsere SQL-Abfrage manipulieren und weiteren SQL-Code einschleusen. Im schlimmsten Fall werden dadurch sensible Daten ausgegeben, Tabelle verändert oder gar ganze Tabellen gelöscht. 
- 
-Ruft die Seite wie folgt auf um dies zu sehen: 
-seite.php?id=1 OR id > 1 
- 
-Wie ihr seht, werden nun alle Benutzer ausgegeben, denn an die Datenbank wird folgender Befehl gesendet: 
  • faecher/informatik/oberstufe/datenbanken/projekt/dbphp/phppdo/start.1606345059.txt.gz
  • Zuletzt geändert: 25.11.2020 22:57
  • von sbel