PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424. Michael Kluge (michael.kluge@tu-dresden.



Ähnliche Dokumente
Interaktive Webseiten mit PHP und MySQL

Durchführung von Webprojekten. PHP und MySQL

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Begleitskript. zum PHP/MySQL. Kurs

Dateneingabe über ein HTML-Formular in eine Datenbank:

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 6: Datenbankabfragen mit SQL und PHP. Stand: Übung WS 2014/2015

Multimedia im Netz. Übung zur Vorlesung. Ludwig-Maximilians-Universität Wintersemester 2010/2011

Grundlagen der Informatik 2

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Folien php/mysql Kurs der Informatikdienste

MySQL, phpmyadmin & SQL. Kurzübersicht

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

PHP und Datenbanken. Verbindung zum Datenbankserver

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing.

SQL-Injection. Seite 1 / 16

Datenbanksysteme SS 2007

Labor 3 - Datenbank mit MySQL

Datenbanken für Online Untersuchungen

TYPO3 und TypoScript

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Sicherheit in Webanwendungen CrossSite, Session und SQL

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Datenbanken 1. Einführung und Zugänge für die eingesetzten Resourcen. ISWeb - Information Systems & Semantic Web University of Koblenz Landau, Germany

Folien php/mysql Kurs der Informatikdienste

PHP 5.4 ISBN Fortgeschrittene Techniken der Web-Programmierung. Bastian Martin, Andreas Dittfurth. 1. Ausgabe, April 2013 GPHP54F

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

PostgreSQL unter Debian Linux

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Einführung in PHP und MySQL

Datenbank - Teil 3. Ziele: Eine Datenbank anlegen mit SQL. Daten eingeben mit SQL. Abfragen stellen mit SQL und PHP.

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

PostgreSQL auf Debian System

MySQL 101 Wie man einen MySQL-Server am besten absichert

OP-LOG

Projekt Online-Shop:

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

MySQL Installation. AnPr

Oracle: Abstrakte Datentypen:

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Grundlagen der Informatik 2

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

desk.modul : WaWi- Export

PHP- Umgang mit Datenbanken (1)

IV. Datenbankmanagement

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Prozedurale Datenbank- Anwendungsprogrammierung

DOKUMENTATION ky2help V 3.6 Servertests

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

SQL. Fortgeschrittene Konzepte Auszug

Folien php/mysql Kurs der Informatikdienste

105.3 SQL-Datenverwaltung

SQL structured query language

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

SQL-INJECTIONS. N E T D E V E L O P E R S G R O U P B E R L I N B R A N D E N B U R G,

Verteidigung gegen SQL Injection Attacks

SQL, MySQL und FileMaker

Arbeiten mit einem lokalen PostgreSQL-Server

Typo 3 installieren. Schritt 1: Download von Typo3

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt

Referenzielle Integrität SQL

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Android Java Specifics / Basic IO

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Datenbanken. Ein DBS besteht aus zwei Teilen:

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Thema: SQL-Injection (SQL-Einschleusung):

Relationale Datenbanken in der Praxis

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Hacker-Methoden in der IT- Sicherheitsausbildung. Dr. Martin Mink

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Zugriff auf Daten der Wago über eine Webseite

Lehrgang: 66/425 Dynamische Webseitenerstellung, Programmierern mit PHP und MySQL vom bis in Dillingen

Übung 1: Ein Website News-System mit MySQL

Hinweise zur Installation von MySQL

Referentielle Integrität

Entwicklung einer Webseite zur Verwaltung von Prüfungsterminen

Teamschool Installation/ Konvertierungsanleitung

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Datenbanken: Datenintegrität.

SQL (Structured Query Language) Schemata Datentypen

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Übungen. DI (FH) Levent Öztürk

Übersicht über Datenbanken

Erstellen einer Datenbank. Datenbankabfragen

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Internet Praktikum im Grunstudium Formularwerte und Datenbanken Speichern, Lesen und Aufbereiten. Dr. Guido Rößling Dipl.-Ing.

SEMINAR Modifikation für die Nutzung des Community Builders

Multimedia im Netz Wintersemester 2013/14. Übung 03 (Nebenfach)

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Transkript:

Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) PHP und MySQL Integration von MySQL in PHP Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424 (michael.kluge@tu-dresden.de)

MySQL Themenüberlick Verbindung zur Datenbank herstellen Daten aus Datenbank abrufen Daten in die Datenbank schreiben Arbeit mit mehreren Tabellen Struktur der Datenbank auslesen Sicherheitsaspekte bei der Datenbankarbeit Ein kleines Beispiel

MySQL Verbindungsaufbau Verbindung zum Server wird Beginn der Sitzung geöffnet Verbindung sollte am Ende der Sitzung geschloßen werden <?php $link = mysql_connect('localhost', 'zih01', 'zih01'); if (!$link) die('verbindungsfehler: '. mysql_error()); echo 'Connected successfully'; mysql_close($link);?>

MySQL Datenbankabfragen Prinzipiell ist jedes SQL-Query über mysql_db_query und mysql_query nutzbar. Werden Daten abgerufen kann der Rückgabewert mit mysql_fetch_... ausgewertet werden. Bei schreibenden SQL-Querys wird bei Erfolg TRUE und bei Misserfolg FALSE zurückgegeben. Datenbankserver Datenbank 1 Datenbank 2 Tabelle Tabelle Tabelle Tabelle Tabelle Tabelle Tabelle

MySQL Datenabfragen <?php // abfrage auf explizite datenbank $result = mysql_db_query( 'db_zih_01', 'select * from demo' ); while( $row = mysql_fetch_row( $result ) ) var_dump( $row ); // abfrage auf ausgewählte datenbank if(!mysql_select_db('db_zih_01') ) die ('Fehler beim Zugriff auf db_zih_01 : '. mysql_error()); $result = mysql_query( 'select * from demo' ); while( $row = mysql_fetch_row( $result ) ) var_dump( $row );?>

MySQL Daten auswerten als Array <?php?> $result = mysql_query( 'select * from demo' ); while( $row = mysql_fetch_row( $result ) ) // dump der daten var_dump( $row ); // zugriff auf daten echo $row[0]; echo $row[1]; array(2) [0]=> string(1) "1" [1]=> string(17) "Der erste Eintrag" array(2) [0]=> string(1) "2" [1]=> string(18) "Der zweite Eintrag"

MySQL Daten auswerten als Assoziatives-Array <?php?> $result = mysql_query( 'select * from demo' ); while( $row = mysql_fetch_assoc( $result ) ) // dump der daten var_dump( $row ); // zugriff auf daten echo $row['demo_id']; echo $row['demo_data']; array(2) ["demo_id"]=> string(1) "1" ["demo_data"]=> string(17) "Der erste Eintrag" array(2) ["demo_id"]=> string(1) "2" ["demo_data"]=> string(18) "Der zweite Eintrag"

MySQL Daten auswerten als Gemischtes-Array <?php?> $result = mysql_query( 'select * from demo' ); while( $row = mysql_fetch_array( $result ) ) // dump der daten var_dump( $row ); // zugriff auf daten echo $row['demo_id']; echo $row['demo_data']; // alternativer zugriff echo $row[0]; echo $row[1]; array(4) [0]=> string(1) "1" ["demo_id"]=> string(1) "1" [1]=> string(17) "Der erste Eintrag" ["demo_data"]=> string(17) "Der erste Eintrag"

MySQL Daten auswerten als Daten-Objekt <?php?> $result = mysql_query( 'select * from demo' ); while( $row = mysql_fetch_object( $result ) ) // dump der daten var_dump( $row ); // zugriff auf daten echo $row->demo_id; echo $row->demo_data; object(stdclass)(2) ["demo_id"]=> string(1) "1" ["demo_data"]=> string(17) "Der erste Eintrag" object(stdclass)(2) ["demo_id"]=> string(1) "2" ["demo_data"]=> string(18) "Der zweite Eintrag"

MySQL Schreiben in Tabellen <?php // einfügen von datensätzen auf explizite datenbank $query = 'insert into demo demo_date (values) Ein Test '; if(!mysql_query( $query ) ) echo 'Fehler beim Schreiben in Tabelle demo:'. mysql_error(); // aktualisieren von datensätzen $query = 'update demo set demo_date= Wert where demo_id=3'; if(!mysql_query( $query ) ) echo 'Fehler beim Schreiben in Tabelle demo:'. mysql_error();?>

MySQL Löschen aus Tabellen <?php // löschen einzenler datensätze $query = 'delete from demo where demo_id=3'; if(!mysql_query( $query ) ) echo 'Fehler beim Löschen aus Tabelle demo:'. mysql_error(); // löschen einer ganzen tabelle mit optimize $query = 'truncate table demo'; if(!mysql_query( $query ) ) echo 'Fehler beim Löschen aus Tabelle demo:'. mysql_error();?>

MySQL Nützliche PHP-Funktionen <?php // anzeige der betroffenen zeilen $query = 'delete from demo where demo_id > 3'; mysql_query( $query ); echo 'Es wurden '. mysql_affected_rows().' gelöscht'; // ausgabe des letzten primärschlüssels mysql_query( 'insert into tbl1 data (values) wert ' ); $last_id = mysql_insert_id(); mysql_query( 'insert into tbl2 fk_demo (values)'. $last_id );?>

MySQL SQL-Injection Interaktive Webanwendungen übertragen Daten vom Client zum Server SQL-Injection = Modifikation eines übertragenen Wertes um zusätzliche Steuerbefehle auszuführen Grund für Anfälligkeiten = mangelhafte Typ/Inhaltsprüfung vor weitergabe an die Datenbank

MySQL SQL-Injection potentielle Ziele Steuerkommandos SELECT INTO OUTFILE ("/etc/passwd") EXEC Informationslecks SELECT * FROM v$version (Oracle) SELECT * FROM sysdatabases (MSSQL) SELECT VERSION() (MySQL) Zugriff auf gesicherte Bereiche Auslesen von Kundendaten aus Tabellen

MySQL SQL-Injection Beispiel Loginformular auf einer Webseite Benutzer muss Name und Passwort eingeben SQL-Abfrage zur Prüfung: select * from users where user='.$_get['user']. ' and pass='.$_get['passwort']; Angreifer gibt als Benutzer john '-- ein select * from users where user='john' Angreifer gibt als Benutzer john' or '1'='1 select * from users where user='john' or '1'='1' and pass='12345'

MySQL SQL-Injection Abwehr Alle Nutzereingaben prüfen Eingaben prüfen (Datentypen/Werte) filtern von Sonderzeichen " ' ; \ - (z.b. mysql_real_escape_string) Verwenden von mod_security Serverseitige Applikation-Level Firewall filtert automatisch SQL-Injections

MySQL Beispiel Nutzerdatenbank $link = mysql_connect('localhost', 'zih01', 'zih01'); mysql_select_db( zih_db_01 ); if(!mysql_query( 'show columns from nutzer_db' ) ) $create_query = CREATE TABLE nutzer_db( nutzer_id int AUTO_INCREMENT PRIMARY KEY, name varchar( 128 ), pass varchar( 32 ) ) ; mysql_query( $create_query ); mysql_close( $link );

MySQL Beispiel Nutzerdatenbank $link = mysql_connect('localhost', 'zih01', 'zih01'); mysql_select_db( zih_db_01 ); $sql = insert into nutzer name, pass (values) 'hans','.md5('test').' ; mysql_query( $sql ); $sql = insert into nutzer name, pass (values) 'maus','.md5('tset').' ; mysql_query( $sql ); $sql = insert into nutzer name, pass (values) 'meier','.md5('reiem').' ; mysql_query( $sql ); mysql_close( $link );

MySQL Beispiel Nutzerdatenbank $link = mysql_connect('localhost', 'zih01', 'zih01'); mysql_select_db( zih_db_01 ); $sql = select * from nutzer where name='.$_request['user']. ' and pass='.md5( $_REQUEST['pass'] ). ' ; mysql_query( $sql ); if( mysql_affected_rows == 1 ) echo willkommen else // anzeige des html formulars mysql_close( $link );