Inhaltsverzeichnis. Einleitung... 11



Ähnliche Dokumente
Tobias Wassermann. Sichere Webanwendungen mit PHP

Schwachstellenanalyse 2012

Inhaltsverzeichnis. 1 Hallo 13

PHP-Schwachstellen und deren Ausnutzung

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

B E N U T Z E R D O K U M E N TA T I O N ( A L E P H I N O

Rechnernetze Praktikum Versuch 8: Zertifikate, Sicherheit in öffentlichen Netzen

Step by Step Webserver unter Windows Server von Christian Bartl

easylearn Systemvoraussetzungen

KEIL software. Inhaltsverzeichnis UPDATE. 1. Wichtige Informationen 1.1. Welche Änderungen gibt es?

vii Inhaltsverzeichnis 1 Einleitung 1

Wie funktioniert das WWW? Sicher im WWW

Wiederherstellen der Beispieldatenbanken zum Buch Microsoft Project 2010

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

Sicherheit in Webanwendungen CrossSite, Session und SQL

Für die c-entron Versionen gilt immer: aktuellste Version aus dem Download-Bereich verwenden!. 3. isuite Outlook GFI Max Connector...

Tutorial Windows XP SP2 verteilen

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

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Aktuelle Angriffstechniken. Steffen Tröscher cirosec GmbH, Heilbronn

Administrator-Anleitung

Intrexx unter Windows Server 2008

Konfiguration des Novell GroupWise Connectors

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

PHP-Sicherheit. PHP/MySQL-Webanwendungen sicher programmieren. von Christopher Kunz, Stefan Esser, Peter Prochaska. überarbeitet

AbaWeb Treuhand. Hüsser Gmür + Partner AG 30. Oktober 2008

Arbeiten mit Workflows Installationsleitfaden Zur Installation des d3 Workflows

Systemvoraussetzungen Sitzungsmanager

Apache. O'REILLY Beijing Cambridge Farnham Köln Paris Sebastopol Taipei Tokyo. Das umfassende Handbuch. Ben Laurie und Peter Laurie 2.

Externe Authentifizierung. Externe Authentifizierung IACBOX.COM. Version Deutsch

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

SANDBOXIE konfigurieren

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

Umzug der Datenbank Firebird auf MS SQL Server

Inhalt. Statistische Daten aus Duisburg Session in Duisburg Projekte Erfahrungen mit SOMACOS Technische Installation Session

INSTALLATION. Voraussetzungen

Schwachstellenanalyse 2013

OUTLOOK-DATEN SICHERN

suhosin PHP-Patch und PHP-Security Extension Peter Prochaska -

Administrator-Anleitung

Plunet BusinessManager. Technische Anforderungen

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: install.odt. Berger EDV Service Tulbeckstr.

Installationsanweisung editit

2. Installation unter Windows 10 mit Internetexplorer 11.0

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

IIS Zertifikat Import um den Zertifizierungspfad sicherzustellen

das neue Webserverkonzept

Version 4.0. service.monitor. Systemanforderungen

Netzwerke - FTP und WWW

enerpy collaborative webased workflows collaborative webbased groupware INDEX 1. Netzwerk Überblick 2. Windows Server 2008

Microsoft Internet Explorer

Client-Systemanforderungen für Brainloop Secure Dataroom ab Version 8.30

Zur Langzeitarchivierung von Webseiten ein Lösungsvorschlag. 19. AUDS Wien, Alexander Herschung,

Synchronisations- Assistent

PHP-Sicherheit. PHP/MySQL-Webanwendungen sicher programmieren. Ifl dpunkt.verlag. Christopher Kunz Stefan Esser Peter Prochaska

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Collax Web Application

BBCode v2.0. Einleitung...2 Installation... 3 Bugfixliste Inhaltsverzeichnis. Überarbeiteter BBCode + neuem Interface.

Medea3 Print-Client (m3_print)

Erfolgreiche Verbindung. 3. Anmeldung: Bitte geben Sie Ihren Benutzernamen und Ihr Kennwort ein.

Notizen. 1 Inhaltsverzeichnis 1 INHALTSVERZEICHNIS EINLEITUNG KONFIGURATIONSEINSTELLUNGEN VERTRAUENSWÜRDIGE SITES HINZUFÜGEN...

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Was ist das Tekla Warehouse

Datenbank-basierte Webserver

Hinweis auf ein Problem mit einem Sicherheitszertifikat einer Webseite

Erweiterungsmodule für den Webbrowser

1 Konfigurationsanleitung Hosted Exchange

Wie mache ich eine Datensicherung vom SQL Server Express

Installieren der Wurzelzertifikate. Registrierungsstelle der Ernst Moritz Arndt Universität Greifswald (UG-RA)

Demopaket FDFsolutions für Windows, Version 1.73, Voraussetzungen & Installation. (Stand )

2.1 Sicherheits-Zonen ActiveX-Steuerelemente Skripting Verschiedenes Erweitert... 9

quickterm Systemvoraussetzungen Version: 1.1

Zentrale Informatik. Fernzugriff über Basic Access

Lokale Installation von DotNetNuke 4 ohne IIS

Dokumentation zur Browsereinrichtung

Multimedia im Netz Wintersemester 2011/12

Installationsanleitung für. SugarCRM Open Source. Windows Einzelplatz

B E N U T Z E R D O K U M E N TA T I O N ( A L E P H I N O

2. Installation unter Windows 8.1 mit Internetexplorer 11.0

Technische Hinweise zur Installation und Freischaltung von Beck SteuerDirekt mit BeckRecherche 2010

Dynamische Webseiten mit PHP 1

November Fachdidaktik WG - bei Peter Sägesser. 2 - Wählen Sie Datei Speichern und

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Administrator Handbuch

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: installcentos.odt

Preis nach den ersten 30 Tagen Kostenlos Kostenpflichtig. Modellierungsnutzer 3 Concurrent Ihre Wahl

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Online-Anwendung FIONA in. Hinweise zur Browsereinrichtung

Kurzanleitung zur Erweiterung der htdig

WinVetpro im Betriebsmodus Laptop

PHP Kurs Online Kurs Analysten Programmierer Web PHP

Erste Schritte mit Brainloop Dox

Installation und Konfiguration Microsoft SQL Server 2012

DOKUMENTATION Datenübertragung LK - BAIK-Archiv

Installation Citrix Receiver unter Windows 8

Transkript:

Einleitung................................................. 11 1 Sicherheit im Kontext von PHP und Webanwendungen........... 17 1.1 Historie: PHP............................................. 17 1.2 PHP heute................................................ 19 1.3 PHP und Apache........................................... 20 1.4 PHP als eigenständige Anwendung............................ 21 1.5 PHP mit alternativen Webservern............................. 22 1.6 Sicherheitskonzepte für Webanwendungen..................... 22 2 Fehlerquellen, die jeder PHP-Entwickler kennen sollte............ 29 2.1 Variablenverfügbarkeit...................................... 29 2.2 Superglobale Arrays........................................ 35 2.3 Zugriff auf Uploads......................................... 37 2.4 Verzeichnisindizierung und Suchmaschinen.................... 38 2.5 Index- und Default-Dateien.................................. 40 3 PHP und Dateien: Die häufigsten Fehler....................... 43 3.1 Temporäre Dateien......................................... 43 3.1.1 Backup-Dateien, Versionsverwaltung und Zugriffsschutz..................................... 44 3.2 Sessions: Permissive Konfiguration oder»alles ist erlaubt«........ 52 3.2.1 Session-IDs nur durch Server vergeben................ 54 3.2.2 Regenerierung der Session-ID bei sensitiven Aktionen.......................................... 55 3.2.3 Absicherung durch TAN............................. 56 3.3 Globaler Dateisystemzugriff.................................. 57 3.4 Auslieferung von Dateien.................................... 65 3.5 Include-Dateien............................................ 67 3.5.1 Ungeparste Dateiendung............................ 67 3.5.2 Dateien in öffentlich zugänglichem Verzeichnis......... 71 3.5.3 Externe Dateien und include......................... 76

4 Sensitive Daten richtig behandeln............................ 83 4.1 Grundsatzprobleme........................................ 83 4.1.1 Falsche Request-Methode........................... 83 4.1.2 Fehlerhafte Verarbeitung........................... 86 4.1.3 Fehlerhafte SQL-Verwertung........................ 90 4.1.4 Zwischenspeicherung von Sessions und Cookies........ 91 4.1.5 Cross Site Scripting................................ 92 4.2 Lösungsansätze........................................... 97 4.2.1 Hash-Austausch via AJAX........................... 98 4.2.2 Vermeidung von unsicheren Passwörtern.............. 108 4.2.3 Vergessene Passwörter............................. 116 4.2.4 Nur notwendige Daten übermitteln................... 123 4.2.5 Datenprüfung..................................... 125 5 Sessions................................................. 135 5.1 Flexibilität................................................ 135 5.2 Strikte Erzeugung......................................... 141 5.3 Gültigkeit................................................ 151 5.4 Session-Umgebung sichern................................. 154 5.4.1 Clientüberprüfung................................. 154 5.4.2 Ausschließlich Cookies verwenden................... 157 5.4.3 Session-ID aus dem Referrer entfernen............... 158 5.4.4 Zugriff auf Session-Dateien......................... 159 5.4.5 TAN-System...................................... 160 5.5 Speicherung.............................................. 165 5.5.1 files............................................. 165 5.5.2 mm............................................. 167 5.5.3 user............................................. 168 5.6 Sessions und Frames....................................... 181 6 Upload und Download..................................... 183 6.1 Upload und PHP.......................................... 183 6.1.1 Uploads beschränken.............................. 185 6.2 Uploads prüfen........................................... 199 6.2.1 Prüfen von Bilddateien............................. 199 6.2.2 Dateityp feststellen................................. 203 6.2.3 Dateiarchive...................................... 204 6.3 Download und PHP........................................ 205 6.3.1 Throttling........................................ 205 6.3.2 Referenzierung................................... 210 6

7 Dateisystemzugriffe........................................ 217 7.1 Wie greift PHP auf Dateien zu?............................... 217 7.1.1 Verschlüsselung.................................... 218 7.1.2 Verschleierung..................................... 220 7.1.3 Skripte schützen................................... 222 7.2 Angriff auf dateibasierte Webanwendungen..................... 224 7.2.1 Vollständiges Auslesen.............................. 225 7.2.2 Direkte Ausgabe.................................... 228 7.2.3 Zeilen/-blockweises Auslesen........................ 229 7.2.4 Vollständiges Speichern............................. 229 7.2.5 Blockweises Speichern.............................. 230 7.3 Pfade und ihre Tücken...................................... 230 7.4 Dateiangaben als Parameter.................................. 237 7.4.1 include, include_once, require und require_once......... 237 7.4.2 Datendateien auslesen.............................. 241 7.4.3 Dateisystemoperationen............................. 242 7.4.4 Prozesse ausführen................................. 244 7.4.5 dl: Module nachladen............................... 247 7.5 Thread- und Binär-Sicherheit................................. 248 8 SSL...................................................... 251 8.1 Allgemeine Hinweise....................................... 252 8.2 OpenSSL-Installation....................................... 253 8.2.1 Installation unter Linux und Unix (Sourcen)............ 253 8.2.2 Installation unter Linux (Paket)....................... 254 8.2.3 Installation unter Windows.......................... 254 8.2.4 Konfiguration...................................... 254 8.3 Erzeugung eines Zertifikats.................................. 255 8.4 Ein eigenes Zertifikat....................................... 257 8.4.1 Erzeugung einer CA................................ 258 8.4.2 Das eigene Zertifikat erstellen........................ 259 8.5 Zertifikat in den Webserver integrieren........................ 261 8.5.1 Apache-Webserver.................................. 261 8.5.2 Roxen Webserver................................... 262 8.5.3 Microsoft Internet Information Server (IIS)............ 262 8.6 SSL zur Authentifizierung nutzen............................. 266 8.6.1 Apache-Webserver.................................. 267 8.6.2 Roxen Webserver................................... 272 7

8.6.3 Microsoft Internet Information Server (IIS)............ 272 8.6.4 Import der Zertifikate mit dem Mozilla Firefox......... 273 8.6.5 Import der Zertifikate mit dem Internet Explorer....... 274 8.7 SSL-Funktionen in PHP.................................... 274 8.7.1 OpenSSL für PHP aktivieren........................ 275 8.7.2 Zertifikatszugriff unter dem Apache-Webserver......... 276 8.7.3 Zertifikatszugriff unter dem Microsoft Internet Information Server (IIS)............................ 277 9 Konfiguration: PHP........................................ 279 9.1 php.ini................................................... 279 9.2 Safe Mode................................................ 280 9.3 Basisverzeichnis mit open_basedir........................... 283 9.4 Speicherlimits............................................ 285 9.5 Ausführungszeit.......................................... 291 9.6 Klassen und Funktionen deaktivieren......................... 292 9.7 dl: Nachladen von Erweiterungen............................ 293 9.8 allow_url_fopen und allow_url_includeurls................... 294 9.9 Variablenverfügbarkeit..................................... 295 9.10 Uploads.................................................. 299 9.11 Sessions................................................. 301 9.12 Fehlerausgabe und -verfolgung.............................. 310 9.13 PHP verbergen............................................ 312 10 PHP ohne Webserver...................................... 313 10.1 Buffer Overflows und andere Tücken......................... 313 10.1.1 Variablengültigkeit................................. 313 10.1.2 Buffer und Stack Overflows......................... 315 10.1.3 Nullbytes......................................... 318 10.2 Einschränkungen der Kommandozeile........................ 318 10.2.1 Keine Zeitbeschränkung............................ 319 10.2.2 Arbeitsverzeichnis................................. 321 10.2.3 Argumentübergabe................................ 322 10.3 Netzwerkprogrammierung.................................. 323 10.3.1 Authentifizierung................................. 323 10.3.2 Transaktionssicherung............................. 324 10.3.3 Eingelieferte Daten................................ 325 8

11 Die Datenbank als Fehlerquelle............................... 331 11.1 Unzureichende Berechtigungen.............................. 331 11.1.1 MySQL........................................... 331 11.1.2 PostgreSQL....................................... 333 11.1.3 MS SQL Server 2000 und 2005....................... 337 11.2 Temporäre Dateien......................................... 337 11.2.1 MySQL........................................... 338 11.2.2 PostgreSQL....................................... 339 11.2.3 MS SQL Server 2000 und 2005....................... 339 11.3 Unix-Sockets, Named Pipes und Shared Memory................ 339 11.3.1 MySQL: Unix-Socket und Named Pipes................ 340 11.3.2 PostgreSQL: Unix-Socket und Loopback................ 342 11.3.3 MS SQL 2000: Shared Memory....................... 343 11.3.4 MS SQL 2005: Shared Memory....................... 345 11.4 SSL-Verbindungen......................................... 346 11.4.1 MySQL........................................... 347 11.4.2 PostgreSQL....................................... 350 11.4.3 MS SQL Server 2000 und 2005....................... 350 12 Die SQL-Injection.......................................... 351 12.1 Kommentare.............................................. 353 12.2 Ergänzung................................................ 355 12.3 Zusätzliche SQL-Anweisungen............................... 364 12.4 Falsche Daten.............................................. 366 12.5 Abhilfe gegen SQL-Injections................................. 367 13 JavaScript: Der Client als Fehlerquelle......................... 371 13.1 Fremde Aufrufe............................................ 371 13.2 Fehlerhafte Parameterverwertung............................. 377 13.2.1 Datentypprüfung................................... 378 13.2.2 Größenprüfung.................................... 382 13.2.3 Logikprüfung...................................... 385 13.3 Was nicht in JavaScript-Code gehört........................... 395 13.4 Formularvervollständigung und Co............................ 398 14 Konfiguration: Webserver.................................... 401 14.1 PHP-Konfiguration durch Apache............................. 401 14.2 Einsicht von Konfigurationsdateien............................ 402 14.3 CGI oder integriertes Modul................................. 404 9

14.4 suexec................................................... 406 14.5 chroot mit mod_chroot..................................... 410 14.6 URL-Sicherung mit mod_rewrite............................. 415 14.7 Benutzerverfolgung mit mod_log_forensic..................... 417 15 Entwicklungs-Guidelines................................... 419 15.1 Variablen................................................ 419 15.1.1 Existenzprüfung................................... 419 15.1.2 Typ- und Wertprüfung............................. 419 15.1.3 Typumwandlung (Casting).......................... 422 15.1.4 Übergabeparameter................................ 423 15.2 Sessions................................................. 428 15.3 Klassen und Funktionen.................................... 428 15.3.1 Objektorientierte Programmierung................... 429 15.3.2 Funktionen....................................... 435 15.4 Dateizugriff.............................................. 438 15.4.1 Lesen von Dateien................................. 438 15.4.2 Schreiben von Dateien.............................. 442 15.4.3 Dateisuche....................................... 444 15.5 Ausgabe................................................. 445 15.5.1 echo() und printf()................................. 445 15.5.2 Übertragung...................................... 446 15.5.3 HTTP-Header..................................... 447 15.6 Aufruf externer Programme................................. 448 Stichwortverzeichnis....................................... 453 10