PHP und MySQL. Formulare - Datenübertragung mit PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424



Ähnliche Dokumente
PHP und MySQL. Sicherheit und Session-Handling mit PHP. Zellescher Weg 12 Willers-Bau A109 Tel

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

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Sessions mit PHP. Annabell Langs Sessions in PHP - Annabell Langs 1

Success! Bestellausgabe

Die Dateiablage Der Weg zur Dateiablage

AJAX DRUPAL 7 AJAX FRAMEWORK. Was ist das Ajax Framework? Ein typischer Ablauf eines Ajax Requests Die Bestandteile des Ajax Frameworks.

Einführung in PHP. (mit Aufgaben)

Speichern. Speichern unter

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Einrichtung Secure-FTP

OP-LOG

DIE ZUKUNFT BEGINNT JETZT: ELEKTRONISCHE UNTERSCHRIFT

Installation von Wordpress

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

Bilder zum Upload verkleinern

FILEZILLA HANDBUCH

PHP Einsteiger Tutorial Kapitel 4: Ein Kontaktformular in PHP Version 1.0 letzte Änderung:

Auto-Provisionierung tiptel 31x0 mit Yeastar MyPBX

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Anleitungen zum Publizieren Ihrer Homepage

Schiller-Gymnasium Hof

Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

Adminer: Installationsanleitung

PHP & HTML. Kurzeinstieg HTML. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge

Lizenzen auschecken. Was ist zu tun?

MARCANT - File Delivery System

Hilfe bei Adobe Reader. Internet Explorer 8 und 9

FTP Tutorial. Das File Transfer Protocol dient dem Webmaster dazu eigene Dateien wie z.b. die geschriebene Webseite auf den Webserver zu laden.

Web Visu Tutorial. Hipecs Web Visu. Übersicht

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Live Update (Auto Update)

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

MailUtilities: Remote Deployment - Einführung

Download, Installation und Autorisierung der Lasergene Software. Bitte unbedingt beachten!

Sicherer Datenaustausch zwischen der MPC-Group und anderen Firmen. Möglichkeiten zum Datenaustausch... 2

Erstellen von Mailboxen

H A N D B U C H FILEZILLA. World4You Internet Service GmbH. Hafenstrasse 47-51, A-4020 Linz office@world4you.com

Um über FTP Dateien auf Ihren Public Space Server - Zugang laden zu können benötigen Sie folgende Angaben:

SEMINAR Modifikation für die Nutzung des Community Builders

Abwesenheitsnotiz im Exchange Server 2010

XQueue Product Sheet - Seiten Editor

Inhaltsverzeichnis Seite

DIE ZUKUNFT BEGINNT JETZT: ELEKTRONISCHE UNTERSCHRIFT

! " # $ " % & Nicki Wruck worldwidewruck

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Schrittweise Anleitung zur Installation von Zertifikaten der Bayerischen Versorgungskammer im Mozilla Firefox ab Version 2.0

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Kleines Handbuch zur Fotogalerie der Pixel AG

Offizielle Webpräsenz für Gruppenführer. Erstellen von Inhalten

Zugriff auf Daten der Wago über eine Webseite

Typo 3 installieren. Schritt 1: Download von Typo3

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Drägerware.ZMS/FLORIX Hessen

Das neue Webmail Überblick über die neuen Funktionen im Outlook Web App 2010

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Leitfaden zur Nutzung von binder CryptShare

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

Web2Lead. Konfiguration

YouTube: Video-Untertitel übersetzen

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

ABACUS Software-Aktivierung

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

Multimedia im Netz Wintersemester 2011/12

DeltaVision Computer Software Programmierung Internet Beratung Schulung

Tutorial -

Updatebeschreibung JAVA Version 3.6 und Internet Version 1.2

Sicherheitseinstellungen... 2 Pop-up-Fenster erlauben... 3

Kostenstellen verwalten. Tipps & Tricks

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Arbeiten mit dem Outlook Add-In

Wie das genau funktioniert wird Euch in diesem Dokument Schritt für Schritt erklärt. Bitte lest Euch alles genau durch und geht entsprechend vor!

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

MAXDATA PrimeBackup Secure Client Kurzanleitung

Datenaustausch mit dem BVK Data Room

Erstellen einer digitalen Signatur für Adobe-Formulare

Windows 7 Winbuilder USB Stick

Anleitung zur Installation von SFirm 3.1 inklusive Datenübernahme

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Wissenswertes über LiveUpdate

ZIMT-Dokumentation für Studierende Webmail-Oberfläche (Roundcube)

Modul Bildergalerie Informationen zum Bearbeiten des CMS-Systems für den SV Oberteisendorf

TeamSpeak3 Einrichten

PC-Kaufmann Supportinformation - Proxy Konfiguration für Elster

Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:

Multivariate Tests mit Google Analytics

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.

ATB Ausbildung Technische Berufe Ausbildungszentrum Klybeck

Outlook 2000 Thema - Archivierung

Aber mancher braucht diese Funktionalität halt, doch wo ist sie unter Windows 8 zu finden?

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Datenbanksysteme SS 2007

Datenaustausch mit dem BVK Data Room

Transkript:

Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) PHP und MySQL Formulare - Datenübertragung mit PHP Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424 Michael Kluge (michael.kluge@tu-dresden.de)

Überblick Client Server Konzept beim PHP-Einsatz Datenübernahme mit PHP Verarbeiten von Dateiuploads Grundlagen zur Dateiarbeit in PHP Sicherheit Tipps und Tricks Michael Kluge / 2

HTML Client Server Konzept Anfrage vom Browser an den Webserver mit Parametern für Skripte Webserver übergibt Parameter an Interpreter Interpreter verarbeitet Parameter Interpreter liefert HTML-Dokument an Webserver Webserver liefert HTML-Dokument an Browser Webbrowser Benutzeroberfläche HTTP Anfrage mit Scriptparametern HTML- Daten Webserver Scriptinterpreter Datenspeicher Server-System Michael Kluge / 3

PHP Datenübernahme aus Formularen Client Server Konzept beim PHP-Einsatz Datenübernahme von Texten Verarbeiten von Auswahlen Verarbeiten von Mehrfachauswahlen Verarbeiten von Radio- und Checkboxen Verarbeiten von Dateiuploads Grundlagen zur Dateiarbeit mit PHP Sicherheit Tipps und Tricks Michael Kluge / 4

Beispiel - Auswahlliste Beispiel Auswahlliste Texteingabefelder Knöpfe Michael Kluge / 5

PHP Datenübernahme globale Variablen in Form eines assoziativen Arrays $_POST -> alles über POST $_GET -> alles über GET $_REQUEST -> beides Webbrowser Benutzeroberfläche HTTP Anfrage mit Scriptparametern HTML- Daten $_FILES -> Dateiuploads Assoziationen des Arrays sind die namen der Formularelemte und Parameter aus der URL Webserver Scriptinterpreter Datenspeicher Server-System Michael Kluge / 6

PHP Datenübernahme (POST) # HTML Seite <form action= form.php method= post > <input type= text name= textfeld value= per post /> <input type= submit /> </form> # PHP Code <?php?> var_dump( $_GET ); var_dump( $_POST ); var_dump( $_REQUEST ); # übermittelte URL forms.php array(0) { array(1) { ["textfeld"]=> string(9) "per post" array(1) { ["textfeld"]=> string(9) "per post" Michael Kluge / 7

PHP Datenübernahme (GET) # HTML Seite <form action= form.php method= get > <input type= text name= textfeld value= per get /> <input type= submit /> </form> # PHP Code <?php?> var_dump( $_GET ); var_dump( $_POST ); var_dump( $_REQUEST ); # übermittelte URL form.php?textfeld=per+get array(1) { ["textfeld"]=> string(9) "per get" array(0) { array(1) { ["textfeld"]=> string(9) "per get" Michael Kluge / 8

PHP Auswahlen und Mehrfachauswahlen Auswahlen, Radioboxen und einzelne Checkboxen werden wie Text übermittelt bei Mehrfachauswahlen muss dem Namen im Quelltext ein [] angehängt werden, damit die Werte als Feld übermittelt werden Michael Kluge / 9

Verarbeiten von Formulardaten mit PHP # HTML Seite <select name= single_value > <option value= p1 selected= selected >Pizza Napoli</option> <option value= p2 >Pizza Salamie</option> </select> <select name= multiple_values[] multiple= multiple > <option value= p1 selected= selected >Pizza Napoli</option> <option value= p2 selected= selected >Pizza Salami</option> </select> # PHP Code <?php var_dump( $_REQUEST['single_value'] ); var_dump( $_REQUEST['multiple_values'] );?> string(2) "p1" array(2) { [0]=> string(2) "p1" [1]=> string(2) "p2" Michael Kluge / 10

PHP Verarbeiten von Dateiuploads Client Server Konzept beim PHP-Einsatz Datenübernahme Verarbeiten von Dateiuploads Upload von Dateien Fehlerbehandlung Restriktionen durch PHP Grundlagen zur Dateiarbeit mit PHP Sicherheit Tipps und Tricks Michael Kluge / 11

PHP Dateiupload # HTML Seite <form action= form.php method= post enctype= multipart/formdata > <input type= file name= dateiupload /> <input type= submit /> </form> # PHP Code <?php?> var_dump( $_REQUEST ); var_dump( $_FILES ); array(1) { ["dateiupload"]=> array(5) { ["name"]=> string(11) "text.txt" ["type"]=> string(10) "plain/text" ["tmp_name"]=> string(18) "/var/tmp/php61qs7v" ["error"]=> int(0) ["size"]=> int(244) Michael Kluge / 12

PHP Fehlercodes beim Upload 0 OK 1 2 3 4 5 6 Datei überschreitet maximale Uploadgröße (serverseitig) Datei überschreitet maximale Uploadgröße (clientseitig) teilweiser Upload Keine Datei hochgeladen Temporäres Verzeichnis fehlt Schreibfehler Michael Kluge / 13

PHP Einschränkungen beim Upload Datei-Uploads deaktivieren file_uploads = 0 -> php.ini Datei-Uploadgröße beschränken upload_max_filesize = 8M -> php.ini maxlength = 8000000 -> html Einstellen des temporären Verzeichnisses upload_tmp_dir -> php.ini Michael Kluge / 14

PHP Dateiarbeit Client Server Konzept beim PHP-Einsatz Datenübernahme Verarbeiten von Dateiuploads Grundlagen zur Dateiarbeit mit PHP Aktionen im Dateisystem Anzeigen von Verzeichnissen Dateiarbeit mit Safe Mode Sicherheit Tipps und Tricks Michael Kluge / 15

PHP Aktionen im Dateisystem Kopieren von Dateien copy( 'quelldatei', 'zieldatei' ) Verschieben von Dateien rename( 'quelldatei', 'zieldatei' ) Speziell für hochgeladene Dateien move_uploaded_file( $_FILES['upload']['tmp_name'], 'zieldatei' ) Löschen von Dateien unlink( 'zieldatei' ) Michael Kluge / 16

PHP Aktionen im Dateisystem Erstellen von Verzeichnissen mkdir( 'zielverzeichnis' ) Löschen von Verzeichnissen rmdir( 'zielverzeichnis' ) Aktuelles Verzeichniss feststellen getcwd() Aktuelles Verzeichniss wechseln chdir( 'zielverzeichnis' ) Michael Kluge / 17

PHP Informationen über Dateien Zeitpunkt der Erstellung filectime( 'datei' ) Zeitpunkt der letzten Änderung filemtime( 'datei' ) Zeitpunkt des letzen Zugriffs fileatime( 'datei') Dateigröße filesize( 'datei' ) Michael Kluge / 18

PHP Verzeichnis Inhalt anzeigen // zu öffnendes verzeichnis festlegen $directory = './'; // verzeichnis öffnen $dir_handle = opendir( $directory ); // elemente anzeigen while( ( $file = readdir( $dir_handle ) )!= false ) { // alle dateien anzeigen (verzeichnisse ausblenden ) if( is_file( $file ) ) { // ausgeben des dateinamens echo $file.'<br />'; Michael Kluge / 19

PHP Dateiarbeit im Safe Mode Safe Mode ist ein Sicherheitsmechanismus, der unter anderem eine Prüfung der Dateirechte aktiviert Nur noch der Besitzer einer Datei kann auf diese Schreiben Problem: Webserver läuft meist als eigener Benutzer, hochgeladene Dateien per FTP gehören aber individuellen Usern -> schreiben auf diese nicht mehr möglich Umgehbar indem man Dateifunktionen über FTP realisiert Michael Kluge / 20

PHP Dateiarbeit (FTP-Copy) function myftp_copy( $src, $trg, $ftpdata ) { $connection = ftp_connect( $ftpdata['ftp_server'] ); $result = ftp_login( $connection, $ftpdata['ftp_user'], $ftpdata['ftp_pass'] ); if ( $connection && $result ) { return ftp_put( $connection, $trg, $src, FTP_BINARY ); else { return FALSE; Michael Kluge / 21

PHP Sicherheit Client Server Konzept beim PHP-Einsatz Datenübernahme Verarbeiten von Dateiuploads Grundlagen zur Dateiarbeit mit PHP Sicherheit Angriffe auf den Server und Daten Cross-Site-Scripting Tipps und Tricks Michael Kluge / 22

PHP Sicherheit $_GET, $_POST, $_REQUEST sind unsicher Angreifer kann URL manipulieren Angreifer kann Quellcode eines Formulares als HTML speichern und manipuliert absenden Zur Sicherheit übermittelte Werte prüfen Passender Datentyp Keine Pfade in Variablen übernehmen register_globals=off Michael Kluge / 23

PHP Überlistete Prüfvariablen # PHP Teil zur Benutzerauthentifizierung if ( $user->is_admin == ADMINISTRATOR) { $admin = 1; if ( $admin == 1) { // Adminbereich anzeigen # Angriff über manipulierte Parameter http://server.de/script.php?admin=1 bei aktiviertem register_globals gelingt so der Zugriff auf dem Admin Bereich Michael Kluge / 24

PHP Zugriff auf sensible Daten Michael Kluge / 25

PHP Cross Site Scripting Angreifer fügt in den übertragenen Text schädlichen Skriptcode oder ein iframe ein Wenn der Code schließlich angezeigt wird kommt der Schadcode zur Ausführung Angriff richtet sich meist gegen andere Besucher der Seite Abhilfe schafft das Ausfiltern von HTML-Tags Wenn Formatierung benötigt Verwendung von alternativer Syntax wie BB-Code Michael Kluge / 26

PHP Tipps und Tricks Client Server Konzept beim PHP-Einsatz Datenübernahme Verarbeiten von Dateiuploads Grundlagen zur Dateiarbeit mit PHP Sicherheit Tipps und Tricks Was man lassen sollte Mehrere Buttons zum Versand Michael Kluge / 27

PHP Was man lieber lassen sollte Spielereien mit JavaScript nicht alle Browser unterstützen JavaScript mancher schaltet es aus nur da wo es keine vitale Funktion hat Geschachtelte Formulare werden derzeit vom Firefox unterstützt sind nicht HTML-konform Mehrere Buttons / Imagebuttons sind nur mit etwas Überlegung möglich Michael Kluge / 28

PHP Mehrere Submit Buttons Ohne Schwierigkeiten möglich, wenn alle Buttons das selbe Ereigniss auslösen Wenn Buttons verschiedene Ereignisse auslösen sollen, treten Probleme auf Lösung 1: alle SUBMIT-Buttons haben selben Namen auswerten des Value-Attributs in PHP unflexibel wenn Text auf dem Button nicht fest ist (Mehrsprachigkeit) Michael Kluge / 29

PHP Mehrere Submit Buttons Lösung 2: Name-Attribut zur Übertragung nutzen Auswerten welcher Button verwendet wurde ( if( isset(... ) ) Lösung 3: kodieren des Wertes innerhalb des Namens automatisches Auswerten mit PHP <form action="test.php" method="post"> <input type="submit" value="alpha" name="mbaction_alpha"> <input type="submit" value="beta" name="mbaction_beta"> </form> Michael Kluge / 30

PHP Mehrere Submit Buttons <?php function multibuttonhandler( $PARAMETERS, $prefix ) { // die namen aller elemente laden $keys = array_keys( $PARAMETERS ); // die namen der übermittelten elemente durchlaufen foreach( $keys as $key ) { // nach dem vorgegebenen prefix suchen if( preg_match( '/^'.$prefix.'(.*)/', $key, $matches ) ) { return $matches[1];?> Michael Kluge / 31

PHP Mehrere Image Buttons Bei der Verwendung von Image-Buttons verschärft sich das Problem Ein Value Attribut ist zwar vorgesehen wird aber nur vom Firefox umgesetzt Jedoch werden die Koordinaten des Mausklicks zusammen mit dem Namen des Elementes übermittelt Anpassung der Funktion für Buttons ermöglicht also auch hier ein Auslesen der kodierten Daten Michael Kluge / 32

PHP Mehrere Image Buttons <?php function imagebuttonhandler( $PARAMETERS, $prefix ) { // die namen aller elemente laden $keys = array_keys( $PARAMETERS ); // die namen der übermittelten elemente durchlaufen foreach( $keys as $key ) { // nach dem vorgegebenen prefix suchen if( preg_match('/^'.$prefix.'(.*).'_[xy]$'/', $key, $matches) ) { return $matches[1];?> Michael Kluge / 33