Am 07. und 08.11.2013 war die Developer Conference 2013 in Hamburg (Kurz DCHH), über welche bereits ein Bekannter(http://blog.hecke29.de/klassentreffen-der-entwickler/) berichtet hat.
Es wurden unter anderem Themen zu Websecurity (OWASP Top 10), Datenbanken, Optimierungs- oder Erweiterungsthemen
angesprochen. Vorträge richteten sich an Einsteiger wie aber auch Fortgeschrittene Entwickler und Nicht-Entwickler. Vor, Zwischen und nach der Konferenz gab es kostenfreie Verpflegung für alle Teilnehmer der Konferenz.
Jeder der Vorträge war geplant für eine Stunde, davon 40 Minuten Redezeit und 20 Minuten Fragezeit, trotz dessen, dass die Konferenz nicht von Profis veranstaltet wurde war die Veranstaltung doch sehr interessant und informativ gestaltet. Allerdings reichte oftmals die Zeit nicht für die einzelnen Themen die in den jeweiligen Sessions angesprochen wurden um die Themen weitgehenst zu vertiefen oder gar alle Sessions die auf der DC13 vorgestellt wurden zu sehen.
Daher werde ich in diesem Blogartikel lediglich nur auf die Sessions eingehen die ich in den beiden informativen Tagen besucht habe.
[AdSense-A]
1. Tag
10.00 Qualität stinkt. Manchmal.
In dieser Session wurde angesprochen welche Merkmale Qualität ausmachen, woran sie sich bestimmen lassen. Ebenso wurde auf Arbeitsprozesse zur Optimierung von Softwareprodukten eingegangen.
Insgesamt ein sehr informatives Thema.
11.00 The Architecture of Stack Overflow
In dieser Session stellte ein Mitarbeiter von Stack Overflow die Plattform von Stack Overflow vor,
samt Aufbau des Netzes / Eingesetzte Technologien / verwendete Programmiersprachen zur Umsetzung von Stack Overflow.
Stack Overflow ist ein Projekt welches mittels .NET realisiert wurde. Ebenso sprach der Mitarbeiter an, dass ihre
Datenbank vollständig im RAM gehalten wird (In-Memory Datenbanken). Ebenso denkt man sich zwar, dass Stack Overflow mittlerweile
ja bereits hunderte von Servern haben muss. Allerdings laut dem Mitarbeiter von Stack Overflow besitzt das Projekt “nur” zwei Racks mit Servern.
13.00 MariaDB: The New MySQL?
In der Session von 13 Uhr um das Thema MariaDB ging es hauptsächlich um die Key-Features von MariaDB und insbesondere darum
wovon sich MariaDB unterscheidet im Vergleich zu MySQL / Warum MariaDB so plötzlich auf die Version 10 gesprungen ist.
Der Versionsprung hängt hauptsächlich damit zusammen, dass sich die MariaDB Entwickler von MySQL abheben wollten.
Allerdings ist nach wie vor MariaDB in der Alpha bzw. nun Beta verfügbar.
Bugfixes sollen schneller gefixed werden von den MariaDB Entwicklern als bei MySQL bzw. Oracle.
MariaDB soll alle Enterprise Features implementiert haben die aktuell MySQL auch bietet.
Ebenso unterstützt es Features wie Sharding um Datenbanken über verschiedene Server zu verteilen, auch die Replaktion soll im Vergleich
zu MySQL optimiert worden sein.
Die Migration von MySQL zu MariaDB soll problemlos möglich sein, allerdings umgekehrt gibt es keine Kompatibilität.
14.00 Rewrites überleben.
In diesem Vortrag ging es nicht um Mod_rewrite wie einige sich das vermutlich denken würden. Sondern um das Neu schreiben von bestehenden
Softwareprodukten. Auch hier wurde zwingend davon geraten keine Rewrites anzufangen, denn meistens endet das Resultat in einem schlechteren
Resultat als es im Vorraus geplant wurde. Ebenso laut aktuellen Statistiken sollen nur 4% aller Projekte einen Rewrite nach Plan überleben.
Dazu zusätzlich wurden Methoden für den Anfang von Rewrites beschrieben, dazu gehören z.B. eine Art Proxies.
Bei diesen handelt es sich darum, dass man Features aus dem alten Projekt langsam in das neue Projekt implementiert, und andere Features
die noch funktionieren in dem alten Projekt belässt und von seinem Proxy auf die alten Funktionen referenziert oder
parallel die Features nachbaut und erst wenn sie fertig sind auf diese umschaltet.
15.00 Graphdatenbanken mit Neo4J 2.0
Hier wurde beschrieben wie Graphdatenbanken funktionieren, dass der Einsatz derer für das Darstellen von Beziehungen optimal ist.
Hierbei ging es eigentlich in erster Linie um eine Einführung in das Thema Graphdatenbanken und die Vorteile von Neo4J 2.0.
16.00 PHP Erweitern
Bezüglich diesem Thema wurde beschrieben wie PHP funktioniert, wie sich eigene Extensions in PHP implementieren lassen und wie sie
funktionieren. Intern wird hierbei Beispielsweise zwischen einem Integer und einem Long nicht unterschieden.
Die Session wurde von einem erfahrenen Entwickler aus dem PHP-Core Team vorgestellt, der bereits 10 Jahre im PHP Projekt drin steckt.
Die Session richtete sich allerdings in erster Linie an C Entwickler und war für PHP Entwickler eher mit Mühe und Not zu verstehen.
2. Tag
Der zweite Tag für meine Themen hatte eher einen schlechten Ausgang. Einiges an Sessions die man hätte wollen sehen sind ausgefallen
oder einzelne Personen von einzelnen Vorträgen sind ausgefallen womit, meiner Meinung nach einige Sessions die Kernschwerpunkte
der eigentlichen Session verfehlt haben, dazu aber später mehr.
10.00 OWASP Top 10
In dieser Session sollten ursprünglich die aktuellen TOP 10 von Sicherheitslücken vorgestellt werden, die alle 3 Jahre von der OWASP
veröffentlicht werden. Es wurde darauf eingegangen was die OWASP ist, welche Ziele sie verfolgen und wie man bei ihnen Mitglied werden
kann bzw. welche Vorteile man daraus gewinnt. Wirkliche Vorteile von der Mitgliedschaft bei OWASP gibt es nicht.
Sie kostet 50 $, das einzige was man erhält ist ein Banner für seine eigene Webseite, allerdings lassen sich die Einnahmen die durch
Mitgliedschaften oder Konferenzen von OWASP entstehen gut verfolgen, da das Projekt vollständig einsehbar ist.
Innerhalb dieser Stunde vom Vortrag wurden hauptsächlich die Themen SQL-Injections (Time-Based), XSS und Session Hijacking vorgestellt.
Diese Themen wurden nicht im Detail behandelt. Eines der erschreckenden Resultate war meiner Meinung nach, dass relativ wenige im Saal wussten
wie man sich technisch vor SQL-Injections oder XSS Angriffen schützen kann. Bei SQL-Injections hatte sich noch knapp die hälfte der
Teilnehmer gemeldet. Bei XSS allerdings so gut wie niemand. Damit bestätigt meiner Meinung nach die Menge das Resultat der OWASP zu den Top 10
Sicherheitslücken die leider nach wie vor Existent sind.
Man sollte doch meinen, dass im Zeitalter von Prepared Statements und der baldigen Explementierung vom Standard MySQL-Treiber für PHP
die Anzahl von Wissenden über diese Angriffstechniken steigen könnte.
Auch hier sollte man erwähnen bzgl. von XSS Angriffen das die Funktion “htmlentities()” kein wahrer Schutz gegen XSS Angriffe ist.
Stattdessen ist die Nutzung von “htmlspecialchars()” effektiver, da diese auch Unicode Zeichen entfernt die als gleiche Zeichen dargestellt werden
wie in “gewöhnlichen” XSS-Angriffen. Themen wie Cookie-Stealing via XSS-Angriffe wurden nicht angesprochen, leider sehr schade.
Bzgl. von Authentifizierungen wurde angesprochen, dass das verwenden von langen Passwörtern nicht limitiert werden sollte oder eher gesagt auf ein
hohes Limit beispielsweise 100 Zeichen. Es darf allerdings nicht frei offen sein, da sonst darüber hinaus DoS-Angriffe gefahren werden könnten,
auch dann wenn Passwörter nicht im Plaintext in der Datenbank hinterlegt werden würden.
Dazu zusätzlich wird abgeraten die Hash-Funktion MD5 zu nutzen, was allerdings auch so altbekannt sein müsste.
Einerseits finden sich die meisten MD5-Hashes direkt über Google, andererseits greifen dort Rainbow-Tables und neben dem, was allerdings nicht
angesprochen wurde ist das Cracking von unsalted MD5-Hashes mit modernen Grafikkarten in rasanter Zeit und ohne Mühe sehr simple.
Weiteres Schnitthema zu den beiden Angriffsmöglichkeit war das Thema “Session Management”.
Hier wurden Angriffsszenarien von CSRF demonstriert und Möglichkeiten zum Schutz.
Einerseits wird von der Verwendung von SSIDs innerhalb von URLs als GET-Parameter oder Querystring abgeraten, andererseits wird die Verwendung
von Tokens in Forms bzw. eine optimierte Session Konfiguration (PHP) demonstriert.
Weitere Konfigurationsbeispiele die gezeigt wurden, waren wie man sich vor RFIs schützt bzw. verhindert, dass ein Angreifer z.B. die /etc/passwd
File oder sonstige Konfigurationsdateien ausließt (LFI außerhalb des Basedirs).
Was in diesem Bezug sehr schade war, war das auf LFI und RFI nicht direkt eingegangen wurde. Es wurden keine Demonstrationsbeispiele für mögliche
LFI Angriffe aufgezeigt. D.h. keine Verwendung von Nullbytes in z.B. einer solchen PHP-Implementierung:
if(file_exists($_GET["page"]."php")){ include($_GET["page"]."php"); }
Nichts desto trotz gibt es ein gutes Konfigurationsbeispiel auch an dieser Stelle für die PHP.ini
PHP expose Version sollte man ausschalten.
Falls man doch einmal Libraries anderer Personen nutzen sollte, z.B. von Github ist darauf zu achten, dass diese nicht z.B. auf
http://www.versionexe.com mit einer negativen Bewertung zu finden sind.
Ebenso sollte man sich anhand der Bewertung einzelner Pakete eine kleine Info daraus bilden ob man eine Library verwenden sollte.
Nichts desto trotz zählt auch hier der Punkt: “Traue niemanden!”.
Später habe ich dem Sprecher (Tobias Zander) der Präsentation noch mein Feedback mitgeteilt. Die Zeit war knapp und nächstes mal wird er auf weniger
Themen eingehen, dafür allerdings intensiver.
11.00 Optimieren von Website-Ladezeiten
Dort wurde das Thema rund um Optimierung von Ladezeiten angesprochen, allerdings hauptsächlich aus der Entwicklersicht.
Beispielsweise kann die Verwendung von mehreren Hostnamen für statische Inhalte helfen die Ladezeit einer Webseite zu verkürzen.
Klingt komisch? Das liegt daran, dass ein Client maximal bis zu 8 Verbindungen gleichzeitig zu einem Hostnamen aufbaut.
Wenn also mehr als 8 CSS/JS Files oder bilder existieren die einzelnt geladen werden müssen, so wird der Client erst warten, bis
die ersten 8 Übertragungen erfolgreich abgeschlossen wurden bis er die nächsten Files nachlädt.
Andererseits mit mehreren Hostnamen wird der Client bis zu 16 Verbindungen bei zwei Hostnames aufbauen un die Daten laden.
Dazu sollte man natürlich die URLs für die jeweiligen Dateien auf ein gleichgewicht anpassen.
Aber auch die Auslagerung von Dateien zu CDNs kann nützlich sein um die Ladezeit zu optimieren.
Anderseits wurde das HTTP 1.1 Protokoll angesprochen, welche Vorteile daraus resultieren die man mit einigen wenigen Konfigurationen
erzielen kann bzw. auch das Thema GZIP encoded Traffic, welches von einem Webserver ausgeliefert wird.
Zum Thema RAM-Disks wurde leider absolut gar nicht eingegangen.
13.00 Data-Driven E-Commerce
Hier wurde darauf eingegangen welche Technologien man verwenden kann um Userverhalten zu analysieren, beispielsweise sollte man
immer Rohdaten unverändert speichern. Ebenso wurde darauf eingegangen wie man einzelnen Kunden die gleiche Produkte gekauft haben
individuelle Werbung einzublenden.
14.00 Be nerd – Managment der Zukunft
In der Präsentation hat ein Physiker eine Präsentation über Entwickler gehalten.
Welche Ziele man verfolgen sollte um ständig auf dem Mark aktuell zu bleiben, worauf man achten muss.
Zusätzlich dazu war das ganze als eine Art Commedy ausgelegt die sehr gelungen war. Zwei Teilnehmer der Konferenz haben hierbei
bei einem Gewinnspiel jeweils ein Raspberry Pi gewonnen.
15.00 Architecture Best Practices für Webanwendungen in der Cloud
Dieser Vortrag war direkt von Amazon über die S3 Cloud und mehr zur Optimierung der Verfügbarkeit der Webseite.
Meiner Meinung nach war dies reines Marketing seitens Amazon. Sie haben ihre Produkte vorgestellt und die Verwendung ihrer Produkte.
16.00 “Einfach so” mit Tests starten
Ursprünglich bezog sich dieses Thema auf CI mit Anwendungen – Testautomatisierung.
Das Ursprungsthema wurde verfehlt. Statt aufzuzeigen wie die Testautomatisierung funktioniert im Bezug zu PHPunit,
was auch in der Beschreibung der Session zu finden war, wurde darauf eingegangen warum man Tests machen sollte.
Die beiden Sprecher haben sich in ihren Argumenten eigentlich nur wiederholt.
Trotzdem im großen und Ganzen, für mich mit einem Studententicket/Azubiticket hat sich die Präsentation sehr gelohnt.
Ich kann jedem die Konferenz raten der sich ein wenig selbst fort bilden möchte.