Suchen und Finden
Service
Infos und Kontakt
Mehr zum Inhalt
Enterprise PHP5 - Serviceorientierte und webbasierte Anwendungen für den Unternehmenseinsatz
Inhalt
6
Vorwort
10
1 PHP im Enterprise-Einsatz
14
1.1 Vorgeschichte
14
1.2 Vorteile von PHP und der Enterprise-Einsatz
16
1.2.1 Rapid Prototyping
16
1.2.2 Schnelligkeit von PHP
17
1.2.3 Vernetzung der Entwickler
17
1.2.4 Wertvolle Ressourcen
19
1.2.5 Tools im Enterprise PHP-Bereich
20
1.2.5.1 Versionskontrollsysteme
20
1.2.5.2 CVSSpam bzw. SVNSpam
21
1.2.5.3 Entwicklungsumgebung
21
1.2.5.4 Lebenszyklus verwalten
22
1.2.5.5 Kontinuierliche Integration
23
1.2.6 Release- und Deployment-Prozesse
26
1.2.7 Codedokumentation
27
1.2.8 Fazit
30
2 Web 2.0: Architektur und Theorie
32
2.1 Das Web 2.0
32
2.1.1 Was ist Web 2.0?
32
2.1.2 Plain-Vanilla Web Applications vs. Web 2.0
33
2.1.3 Social Collaboration – Let Others Work
34
2.2 Innovationen im Web 2.0
35
2.2.1 RSS und Podcasting
35
2.2.1.1 RSS
35
2.2.1.2 Podcasting
36
2.2.2 Weblog
37
2.2.2.1 Permalinks
37
2.2.3 Wiki
37
2.2.3.1 Wiki-Vandalismus
38
2.2.4 Mashups
39
2.2.5 Tagging
41
2.2.6 Semantic Web
42
2.2.6.1 Semantik im Web
42
2.2.6.2 RDF
42
2.2.7 Die neuen GUI-Elemente des Web 2.0
42
2.2.7.1 Slider
43
2.2.7.2 Fisheye
44
2.2.7.3 Desktop-Menüs im Web
44
2.2.7.4 Strukturierung anhand der Baumstruktur
45
2.2.7.5 Desktop-Fenster im Web
45
2.2.8 Malleable Content
46
2.2.9 Suggestion Pattern
47
2.3 Der Paradigmenwechsel in der Architektur
48
2.3.1 Der Client und JavaScript im Rampenlicht
48
2.3.2 Ajax
49
2.3.2.1 Polling
50
2.3.2.2 Sicherheit
51
2.3.2.3 Alternativen
51
2.3.3 REST
52
2.3.3.1 Permutation Pattern
53
2.3.4 Serviceorientiertes MVC mit Ajax und REST
54
2.3.4.1 Wieso MVC?
54
2.3.4.2 Modell – Analyse der Daten und Identifizierung der Ressourcen
55
2.3.4.3 View – der Representation Layer
55
2.3.4.4 Controller
56
2.3.5 Serverseitige Codegenerierung für den Client
56
2.3.6 Helper-Funktionen
58
2.3.7 Scaffolding
59
2.3.8 Webanwendungen in Echtzeit
59
2.3.8.1 Die persistente Verbindung zwischen Client und Server
60
2.3.8.2 PUSH! via COMET
61
2.3.8.3 Echtzeit braucht noch echt Zeit
62
2.4 Fazit
63
3 Web 2.0 – Praxis
66
3.1 Veränderte Architektur
66
3.1.1 DOM-Veränderungen
67
3.1.1.1 Hinzufügen von Knoten
67
3.1.1.2 Entfernen von Knoten
68
3.1.1.3 Verändern von Knoten
68
3.1.1.4 Verändern des Inhalts von Knoten
69
3.1.2 Ajax-Calls
69
3.2 Frameworks, APIs und JavaScript-Bibliotheken
70
3.2.1 Prototype und script.aculo.us
71
3.2.1.1 Einführung
71
3.2.1.2 Anwendung
73
3.2.2 Dojo
74
3.2.2.1 Einführung
74
3.2.2.2 Anwendung
75
3.2.3 TurboWidgets
76
3.2.3.1 Einführung
76
3.2.3.2 Anwendung
76
3.2.4 Yahoo! User Interface Library (yui)
77
3.2.4.1 Einführung
77
3.2.4.2 Anwendung
79
3.2.5 MochiKit
81
3.2.5.1 Einführung
81
3.2.5.2 Anwendung
81
3.2.6 Vergleich der Frameworks
82
3.2.7 Weitere Ansätze
83
3.2.8 Integration der Frameworks in PHP
84
3.3 GUI-Elemente in Web 2.0-Anwendungen
84
3.3.1 Form Widgets
84
3.3.1.1 Buttons
84
3.3.1.2 Eingabefelder
85
3.3.1.3 Inline-Editing
92
3.3.1.4 Schieberegler
95
3.3.2 Drag & Drop
98
3.3.3 Ajax-Calls
104
3.4 Beispielanwendung
108
3.4.1 Vorgabe
109
3.4.2 Vorgehensweise
109
3.4.3 Resultat
111
4 Web 2.0 Security
112
4.1 Schöne neue (Hacker-)Welt
112
4.1.1 Alles beim Alten?
113
4.1.1.1 Klassische Sicherheit bei Webapplikationen
113
4.2 XSS und CSRF oder neue Probleme mit altenBekannten
114
4.2.1 Cross Site Scripting (XSS)
114
4.2.1.1 Dom-basierte XSS
115
4.2.1.2 Nichtpersistente, reflektierte XSS-Attacken
116
4.2.1.3 Persistente XSS-Attacken
117
4.2.2 Cross Site Request Forging (CSRF)
118
4.2.2.1 HTML-basierte CSRF
118
4.2.2.2 JavaScript-basierte CSRF
118
4.2.2.3 XMLHttpRequest-basierte CSRF
119
4.2.2.4 Schutzmaßnahmen gegen CSRF
119
4.2.2.5 XSS und CSRF
120
4.2.2.6 Security und Ajax
120
4.3 Ajax Malware
121
4.3.1 JavaScript-Viren
121
4.3.1.1 Der MySpace-Wurm
121
4.3.1.2 „Samy ist mein Held&ldquo
122
4.3.1.3 Freunde finden mit Ajax
122
4.3.2 JavaScript Spyware
124
4.3.2.1 Keylogger
124
4.3.2.2 Clipboard-Diebstahl
124
4.3.3 Was die Zukunft bringt
125
4.3.3.1 Beispiel: Browserbasiertes Botnet
125
4.3.3.2 Beispiel: Per JavaScript in das Intranet einbrechen
126
4.4 JavaScript Security
127
4.4.1 Plattform und Sprache
128
4.4.2 Die JavaScript Sandbox
128
4.4.3 Same Origin Policy
129
4.4.4 Seitenkontext
130
4.4.5 CSRF und Web 2.0
130
4.4.6 Hijacking JavaScript
131
4.4.6.1 Man in the Middle in JavaScript
131
4.4.6.2 Der Dojo-Ajax-Sniffer
131
4.5 Web 2.0 und Security
132
4.5.1 Statischer Seitenkontext
132
4.5.2 Immer eingeloggt – oder warum CSRF ein wirkliches Problem ist
133
4.5.3 Gut vernetzt
134
4.6 Komplexe XSS-Attacken
135
4.6.1 Auslesen von Formularen
135
4.6.2 History des Browsers ermitteln
136
4.7 XSS verhindern
138
4.7.1 HTML filtern
138
4.8 XSS-Filter umgehen
139
4.8.1 Einfache Filter-Evasions
139
4.8.2 Filter Evasions über Codepages
139
4.8.2.1 UTF-7-Filter Evasion
139
4.8.2.2 Variable-Width Filter Evasions
140
4.8.3 Filter Evasions mit JavaScript-Bibliotheken
141
4.8.4 JSON
142
4.8.4.1 Was ist JSON?
142
4.8.4.2 Wie wird JSON erzeugt?
143
4.8.4.3 Wie wird JSON geparsed?
143
4.9 Sichere Ajax-Applikationen entwickeln
144
4.9.1 Die JavaScript-Problematik
144
4.9.2 Validierung
144
4.9.3 Filtern und Säuberung
144
4.9.4 Escaping
145
4.9.4.1 Skript
145
4.9.4.2 Text
145
4.9.4.3 Stylesheets
145
4.9.4.4 URLs
146
4.9.4.5 Formularfeldwerte und Attribute
146
5 Software-Tests in PHP-Applikationen
148
5.1 Test als effektiver Teil des PHP-Entwicklungszyklus
149
5.1.1 Qualitätskriterien und Umfeld
151
5.1.2 Risikobewertung
156
5.1.3 Test-Workflows
157
5.2 Automatisierte Akzeptanztests
160
5.2.1 Automatisierung
160
5.2.2 Selenium IDE und Testrunner
164
5.2.3 Selenium RC
165
5.2.4 Selenium im eigenen Projekt einsetzen
166
5.3 Unit-Tests
170
5.3.1 Wann Unit-Testing betreiben?
171
5.3.2 Blackbox und Whitebox
172
5.3.3 Testfälle aufstellen
173
5.3.4 Grenzwerte
177
5.3.5 Und das war schon alles?
178
5.4 Code Coverage
178
5.5 Weitere Möglichkeiten
178
5.5.1 Externe Testgruppen
178
5.5.2 Benchmarking und Lasttests
180
5.5.3 Lesbarkeit und Notationsstandards
182
5.5.4 Code Reviews
183
5.6 Ausblick
183
6 Agiles Projektmanagement für PHP-Projekte
186
6.1 Erlernen der Spezifikation
187
6.2 Einsatzgebiet von PHP in Projekten
188
6.2.1 Daily Business in PHP-Projekten
189
6.3 Klassisches Projektmanagement
189
6.3.1 Definitionsphase
190
6.3.2 Phase der Planung
191
6.3.3 Die Durchführung
191
6.3.4 Der Abschluss
191
6.3.5 Problematik in heutigen IT-Projekten
192
6.4 Prozessmanagement
193
6.5 Agile Software-Entwicklung
196
6.5.1 Extremprogrammierung
199
6.5.1.1 Vorgehen im XP-Projekt
200
6.5.2 Crystal Clear
204
6.6 Scrums Basics
208
6.6.1 Scrum-Typen A, B, C
214
6.6.2 Scrum bei PHP
217
6.7 Fazit
217
7 Die Grenzen des agilen Ansatzes – ITIL
220
7.1 „Prozesse müssen gelebt werden"
220
7.2 IT-Service-Management nach ITIL
222
7.2.1 Der Service-Support
223
7.2.2 Der Service-Desk
224
7.2.3 Incident-Management
225
7.2.4 Problemmanagement
227
7.2.5 Change-Management
229
7.2.6 Release-Management
232
7.2.7 Configuration-Management
234
7.3 Der LAMP-Stack in einer ITIL-Umgebung
235
7.3.1 Software-Entwicklung mit PHP im ITIL-Umfeld
237
7.3.2 Versionsverwaltung und Paketmanagement
240
7.3.3 Dokumentation
246
7.3.4 Der produktive Betrieb
248
7.4 Bewertung, Probleme und Fazit
249
8 Literatur
252
9 Über die Autoren
256
Register
260
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion





















