54
PHP-Sicherheit Gefahren und Lösungsansätze Christopher Kunz <[email protected]>

Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

PHP-SicherheitGefahren und Lösungsansätze

Christopher Kunz<[email protected]>

Page 2: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

2

Über Christopher Kunz

• Wohnt und arbeitet in Hannover• PHP-Erfahrung seit 1999• Mitglied im Hardened-PHP Project• URLs

– http://www.christopher-kunz.de/– http://www.hardened-php.net/– http://www.php-sicherheit.de/

Page 3: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

3

Weiterführende Informationen

Christopher Kunz, Peter Prochaska

PHP-Sicherheit

dpunkt.verlag 2006

(2. Auflage 2007)

ISBN 3-89864-369-7

€ 36,00

Page 4: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

4

Agenda

• Aktuelle Entwicklungen in Webapp-Security

• Client-Side Angriffe• Server-Side Angriffe• Härten des Webservers / PHP• Request Filtering mit Apache-Modulen• (Alle Slides werden auch online sein!)

Page 5: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

5

So sieht's aus...

• "Wurm schlängelt sich durch MySpace"• "StudiVZ: Belohnung für

Sicherheitslücken"• "Web-Kalender Kronolith lässt sich Code

unterschieben"• "deV!L`z Clanportal - SQL Injection

[061124a]"

Page 6: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

6

Aktuelle Problemfelder

• Angriffe gegen Nutzer– Cross-Site Scripting (XSS)– Cross-Site Request Forgery (CSRF)

• Angriffe gegen Server– SQL Injection– Command Injection– Local/Remote Code Execution

Page 7: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

7

Angriffe gegen den Nutzer

• Nutzer webbasierter Applikationen sind gefährdet!

• Aktuelles Beispiel: StudiVZ• Ausspähen sensitiver Informationen per

JavaScript/DOM• Ausnutzen von Browser-Komfort für

eigene Zwecke („AutoVervollständigung“)• Sehr große Spanne an Möglichkeiten

Page 8: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

8

XSS – Cross-Site-Scripting

• Grundidee: Zonenmodell moderner Browser austricksen

• Angreifer sucht Möglichkeit, eigenen Code (JavaScript, nicht PHP/Perl o.ä.) auf Zielsite einzubetten

• Browser des Opfers führt diesen Code aus• Sicherheitszone: Die der Zielsite

Page 9: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

9

XSS – Einfache Beispiele

• Bei Formular-Textfeldern– "><script>alert('xss')</script>– ' onfocus=javascript:alert('xss')

• In HTML-Tags– <IMG SRC="javascript:alert('XSS');">– <BODY

BACKGROUND="javascript:alert('XSS')">• XSS Cheatsheet enthält mehr Beispiele

– http://ha.ckers.org/xss.html

Page 10: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

10

XSS - Komplexität

• Durch DOM beliebige Manipulationen am Dokumentbaum möglich– Ersetzen von Text– Austauschen von Formularfeldern / -zielen– Automatischer Versand von Formularen

• Durch Browserkomfort (Paßwort-Safe) auch Login-geschützte Seiten kein Problem

Page 11: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

11

XSS und "Web 2.0"

• Moderne Websites sind überladen mit JavaScript (AJAX, Besuchertracking etc.)

• Injektion von HTML-Tags oft nicht nötig• Eine verwundbare JS-Variable reicht• Komplette Anwendung ist nicht mehr

vertrauenswürdig• Bei Webmail etc. praktisch unbegrenztes

Abuse-Potential• Auch nett: JS in Quicktime, Cross-Domain XML

per Flash

Page 12: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

12

XSS und PHP

• Hauptgrund: Ungeprüfte Ausgabe von Userinput

• echo $_GET['irgendwas']• PHP-Gegenmittel

– htmlentities(); – strip_tags()

• Kein Administratorenproblem

Page 13: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

13

SQL Injection

• Angriffe gegen Datenbanklayer • Manipulation ungenügend geprüfter SQL-

Queries• Fehlende Typ-/Inhaltsprüfung• Resultat: Verfälschtes Resultatset

– Auslesen privilegierter Daten– Umgehung von Autorisierung / Authentifizierung– Je nach DBMS: Zugriff aufs Dateisystem

Page 14: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

14

SQL Injection in PHP

• Angreifbares Query:• $query = "SELECT is_authorized FROM

users WHERE username = '" . $_POST['username'] . "' AND password = '" . $_POST['password'] . "'";

• $_POST['username'] = "admin' /*"Authentifizierung umgangen

Page 15: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

15

SQL Injection: Gegenmaßnahmen

• Usereingabe nicht vertrauen!• Maskieren von SQL-Sonderzeichen

– mysql_real_escape_string($_POST['username']

• Prepared Statements– mysqli->prepare() etc.

• Hauptsächlich Entwicklerproblem

Page 16: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

16

Angriffe gegen den Server

• Automatisierte Scans nach verwundbaren Applikationen

• Professionelles Management der Angreifer• Zunehmende professionelle Tools• Ziel: Server rooten / als Spambot

verwenden• Das IST ein Administratorenproblem ☺

Page 17: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

17

Klassifikation

• Local/Remote Code Injection• Arbitrary file inclusion

– meist "dank" eval/include und Konsorten– Klassiker: include($_GET['page'])

• Königsklasse: Nachladen von Exploitcode per HTTP– Neu in PHP: Stream-Handler data: - praktisch

für Exploits

Page 18: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

18

C99shell

Page 19: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

19

r57shell.php

Page 20: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

20

Defacing Tool Pro v2.5

Page 21: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

21

"PHP ist unsicher!"

• Oft verbreitetes "Argument" gegen PHP• Nicht PHP ist unsicher, sondern PHP-

Anwendungen– Schwache Typisierung erleichtert Entwicklerfehler

• Ist C schuld an Sendmail oder Bind 7?• Allerdings: Lücken im PHP-Kern noch immer

(zu) häufig• Tainted Mode fehlt nach wie vor

Page 22: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

22

Bordmittel für PHP-Security

• Geeignete Auswahl der SAPI• CGI/FastCGI statt mod_php

– Separation der Nutzer mittels suExec– Eigene php.ini pro Nutzer– Auch versch. PHP-Binaries pro Nutzer

möglich• ini-Einstellungen für mehr Sicherheit

Page 23: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

23

Safe Mode

• UID/GID Checks bei Dateioperationen• Seit PHP 4 in PHP, stets Notlösung• Extension-abhängig, häufige Lücken in der

Vergangenheit• Wird in PHP 6 abgeschafft• Oft falsches Gefühl der Sicherheit

Page 24: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

24

open_basedir

• open_basedir=/var/www/kunde1• Überprüft bei Dateioperationen

Verzeichnis• Direktive gibt Basisverzeichnis an,

außerhalb dessen nicht zugegriffen werden darf

• Im Beispiel: include("/etc/passwd") wird verhindert

Page 25: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

25

disable_functions

• disable_functions="system,passthru,eval"• Funktionen selektiv verbieten• Wird oft für Prozeßkontroll-

/Systemfunktionen eingesetzt• Unerwünschte Seiteneffekte• Kompatibilitätsprobleme

Page 26: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

26

system() und Co.

• PHP-Funktion system() forkt Shell• Oft für Helper-Binaries wie ImageMagick• Eingesetzt u.a. bei Typo3• Problem: Shell + Binaries kümmern sich

nicht um Safe Mode Sicherheitsleck!• Lösung: Keine externen Binaries zulassen!

Page 27: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

27

allow_url_fopen

• Großes Problem für PHP-Anwendungen: Include auf unsichere Ziele

• Direktive "allow_url_fopen Off" verbietet Öffnen von URLs komplett– Unerwünschte Nebenwirkungen

• Seit PHP 5.2.0: "allow_url_include" –berücksichtigt nur include/require(_once)

• Empfehlung: Ausschalten!

Page 28: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

28

Register Globals

• Registrierung von Requestvariablen als globale Variablen

• Aus $_GET['foo'] wird $foo• Häufig noch aktiviert, obwohl seit 4.2.0 default

off• register_globals on vereinfacht unsauberen

Code• register_globals Off! Immer!• register_globals verschwindet in PHP 6

Page 29: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

29

Suhosin

• Freier Patch / Extension für PHP vom Hardened-PHP Project

• Früher: "Hardened-PHP" bzw. "Hardening Patch for PHP"

• Per php.ini konfigurierbar• http://www.suhosin.org/

Page 30: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

30

Extension / Patch

• Funktionalität aufgeteilt in – PHP-Extension– Patch für PHP-Quellcode

• Extension kompatibel zu allen anderen PHP-Extensions

• Suhosin-Teile können unabhängig voneinander genutzt werden

• Verfügbar in OpenSUSE, diversen BSDs, Gentoo, Debian etc.

Page 31: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

31

Suhosin-Patch

• Schutz gegen Overflows– Canary Protection für Zend Memory Manager

• Schutz gegen Formatstring-Angriffe

Page 32: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

32

Suhosin: Simulationsmodus

• Konfiguration: suhosin.simulation• Tut alles, nur keine „richtigen“ Aktionen• Sehr nützlich zum Überprüfen auf

Probleme mit lokaler Installation• Testen / Austarieren der Blacklist /

Whitelist

Page 33: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

33

Suhosin: Variablen-Features

• Variablenfilter– GET/POST/COOKIE darf keine geschützten

Variablen enthalten– Variablenlänge, Variablenzahl, Arraytiefe etc.

limitierbar– Superglobals gegen extract() etc. geschützt

Page 34: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

34

Suhosin: Runtime-Features

• Rekursionstiefe limitierbar• memory_limit kann nicht mehr vom User

geändert werden• Neue realpath() Funktion

Page 35: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

35

Suhosin: Whitelist/Blacklist

• Per Vhost konfigurierbar• Whitelist für Funktionen• Blacklist für Funktionen• Zwei Modi

– Normal– Innerhalb eval()

Page 36: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

36

Suhosin: Include-Filter

• (Konfigurierbares) Verbot von include auf...– URLs (Blacklist/Whitelist möglich)– Überlange Dateinamen (BSD)– Abgeschnittene Dateinamen (%00)– Hochgeladene Dateien– Schutz gegen Directory Traversal

(„../../etc/passwd“)

Page 37: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

37

Suhosin: Diverse Features

• Kryptographiefunktionen– CRYPT_BLOWFISH-Algorithmus für crypt()– Sha256() und sha256_file() für Message

Hashing• Transparente Cookieverschlüsselung• Transparente Verschlüsselung von

Sessiondaten• Umfangreiches Logging

Page 38: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

38

mod_security

• Freies Apache-Modul• Analyse eingehender Requests• Blacklist-Approach• Regex-basierte Regeln• Aktuelle Versionen: 1.9.x / 2.0• Grundlegende Änderungen in 2.0

Page 39: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

39

mod_security: Features

• Überprüfung des gesamten Scopes oder einzelner Bestandteile (GET, POST, Cookie etc.)

• Überprüfung von XML-Dokumenten mit xPath

• Sprachunabhängig• Logging / IDS-Funktionalität• chroot-Umgebung für Apache

Page 40: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

40

mod_security Installation

• Download von http://www.modsecurity.org/• Version 1.9

– apxs -cia mod_security.c– apachectl stop / start– Fertig!

• Version 2.0– Makefile editieren (top_dir =/usr/local/apache2)– make; apachectl stop; make install– Konfiguration– apachectl start

Page 41: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

41

mod_security: Konfiguration

• LoadModule security2_module modules/mod_security2.so

• SecRuleEngine [On|Off|DetectionOnly]– Vor 2.0: SecFilterEngine

• SecServerSignature PwnServer/1.0• SecChrootDir /home/chroot

Page 42: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

42

mod_security: Regeln

• Regeln bestehen aus 2-3 Komponenten– optional: Wo? (Variablen-Scope)– Was? (Filterausdruck)– Was tun? (Aktion)

• SecFilter prüft gesamtes Scope• SecFilterSelective prüft Teilscope

– In mod_security 2: SecRule– SecRule VARIABLES OPERATOR [ACTIONS]

Page 43: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

43

mod_security: Scoping

• REQUEST_URI• REQUEST_HEADER:Content-Length • ARGS • ARGS|!ARGS:safe• ARGS:unsafe• Regexp: ARGS:/^pageid_/ • XML:/xPath/Expression• etc.

Page 44: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

44

mod_security: Operatoren

• Pre-2.0: Regexp für Regeln• 2.0: viele zus. Funktionen

– Performance-Impact!• Operatoren

– Numerisch: eq, ge, gt, le, lt– Regexp: rx (impliziert durch Regex am Regelbeginn)– rbl – RBL-Lookup z.B. auf REMOTE_ADDR– etc.

• SecRule ARG:id "@gt 0"

Page 45: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

45

mod_security: Aktionen

• pass – An dieser Regel vorbeilassen• allow – An allen Regeln vorbeilassen• deny – HTTP-Status 403 senden (= status:403)• status:x – HTTP-Status x senden• redirect:x – HTTP-Redirect auf URI x• exec:x – externes Executable x ausführen• nolog, log – Meldung (nicht) loggen• skipnext:x – Nächste x Regeln überspringen• chain – Verkettung mit nächster Regel• pause:x – Ausführung um x ms verzögern• u.a.m.

Page 46: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

46

mod_security: Fazit

• Blacklistansatz unnütz gegen 0Day• Fängt mit passenden Rulesets extrem

viele automatisierte Exploits• "Web-IDS" im DetectionOnly-Modus

Page 47: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

47

mod_parmguard

• Freies Apache-Modul• Analyse eingehender Requests• Apache 1.3, 2.x• Whitelist-Ansatz• XML-Konfigurationsdateien

Page 48: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

48

mod_parmguard

• Whitelist-Ansatz gilt allg. als sicherer– Keine "überflüssigen Variablen"– Klare Definition der möglichen Schnittstellen

• Constraints– Datentyp– Wertebereich– Bei Aufzählungen: Mögliche Optionen

Page 49: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

49

mod_parmguard: Installation

• Download von http://www.trickytools.com/php/mod_parmguard.php

• ./configure –with-apxs[2]=/usr/sbin/apachectl

• make && make install• apachectl stop / start• Fertig!

Page 50: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

50

mod_parmguard: httpd.conf

• Konfiguration innerhalb von <Location>-Blöcken

<Location />ParmguardEngine OnParmguardConfFile /etc/parmguard.xml

</Location>

Page 51: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

51

mod_parmguard: XML-Konfiguration

• Konfigurationssprache: XML• Validierung gegen mitgelieferte DTD• Schachtelung / Gruppierung von Parametern• Benutzung herkömmlicher XML-Tools zur

Generierung möglich<url>

<match>foobar.php</match>[parameter]

</url>

Page 52: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

52

mod_parmguard: Beispiel

<xml version="1.0"?><!DOCTYPE parmguard SYSTEM

"mod_parmguard.dtd"/><parmguard>

<global name="http_error_code" value="403"/><url><match>adresse.php</match><parm name="name"><type name="string"/><attr name="maxlen" value="20"/><attr name="charclass" value="^[a-zA-Z]+$"/>

</parm><parm name="PLZ"><type name="integer"/><attr name="minval" value="00000"/><attr name="maxval" value="99999"/>

</parm></url>

</parmguard>

<form>

<input type="text" name="name">

<input type="text" name="PLZ">

<input type="submit">

</form>

Page 53: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

53

mod_parmguard: Fazit

• Interessanter Ansatz für kontrollierte Umgebung

• Aufwand kaum vertretbar bei großen Anwendungen

• Für Administratoren Variablenliste schwer zu erstellen

Page 54: Hardening a web server - Heinlein Support...4 Agenda • Aktuelle Entwicklungen in Webapp-Security • Client-Side Angriffe • Server-Side Angriffe • Härten des Webservers / PHP

54

Vielen Dank

• Slides online: http://www.php-sicherheit.de/

• Fragen? • Kontakt: christopher.kunz@hardened-

php.net