Hallo!
Mein Name ist David Müller, ich arbeite bei der Public Cloud Group und wohne in Frankfurt. Hier geht es hauptsächlich um Webentwicklung.Kategorien
- webdev (131)
- php (84)
- Javascript (32)
- Datenbanken (22)
- Software Engineering (12)
- Performance (8)
- Security (27)
- PHP-WTF (11)
- Best of the Web (13)
- Quicktips (32)
- Linux (4)
- Java (3)
- misc IT (10)
- Persönlich (9)
- webdev (131)
Blogroll
Neueste Kommentare
- Tristan Tate bei Javascript: Arrays kopieren
- Daniel Marschall bei Dealing with Trusted Timestamps in PHP (RFC 3161)
- Login Mit Facebook Tutorial – Logini helper bei Facebook API – Tutorial
- PHP validation/regex for URL - Design Corral bei Why URL validation with filter_var might not be a good idea
- Manuel bei Meine ultimativen Buchempfehlungen
Archiv der Kategorie: webdev
PHP-Includes visualisieren mit Inclued
Ich bin ja ein großer Freund von statischer Codeanalyse und optischer Aufbereitung (siehe auch Codevisualisierung mit pfff: PHP Frontend For Fun). Nun bin ich auf was neues aufmerksam geworden: Inclued. Mittels dieses coolen Tools lassen sich Includes zwischen Dateien einer Webanwendung visualisieren – sowas kann durchaus nützlich sein, wenn man sich in eine Anwendung reinschaffen möchte oder einen Überblick erhalten will.
Installationsanleitung
Ich gehe hier von Ubuntu aus, sollte aber mit kleinen Abwandlungen auch mit anderen Distributionen gut gehen.
- Wir brauchen phpize, um inclued zu installieren. Das ist im php-dev Paket enthalten.
sudo apt-get install php5-dev
- Nun wird inclued selbst über pecl installiert:
sudo pecl install inclued-alpha
- Zur php.ini
Veröffentlicht unter php, Quicktips, webdev
2 Kommentare
Best-of-the-Web 3
Und wiedermal gibts das – meiner Meinung nach – spannendste aus der Blogwelt der letzten Zeit.
- Give user feedback during execution – PHP’s Outputbuffering dazu verwenden, lang laufende Scripte „responsive“ wirken zu lassen
- Using MySQL Stored Procedures with PHP mysql/mysqli/pdo – Stored Procedures mit den 3 genannten Arten aufrufen
- Output Buffering – Verschiedene Schichten des Output Bufferings verwenden + alle Arten des „flushens“ genauer erklärt
- Strukturierte Versionierung mit Subversion – Kurzerklärung der SVN-Waffen Tags, Branches, Trunk…
- The truth about non-blocking JavaScript – Alle bekannten Arten des Scriptloadings
- Which waterfall led to greater revenues? – Über die Gefahr des Optimierens mit YSlow!
Veröffentlicht unter php, Datenbanken, Performance, Best of the Web, webdev
Hinterlasse einen Kommentar
Der Einfluss von Cookies auf die Performance einer Webseite
Cookies werden oft missachtet, wenn es um die Optimierung einer Webseite hinsichtlich Performance geht – zu unrecht! Das wunderbare YSlow von Yahoo zum Beispiel hat einen Test eingebaut, der genau darauf abzielt. In den Performance Grundsätzen dazu heißt die Leitregel Use Cookie-free Domains for Components.
Das Problem
Cookies können erstmal in beliebiger Anzahl und ziemlicher Größe auf Clientseite abgelegt werden. Das Setzen von Cookies geht sowohl mittels Javascript wie auch von der Serverseite aus, bspw. mit PHP. Womit der Cookie gesetzt wird, ist letztendlich egal. Der Effekt auf das Ladeverhalten der Webseite ist in jedem Fall, dass bei jedem HTTP-Request vom Client aus alle Cookies im Anfrage-Header mit übermittelt werden.… Den ganzen Post lesen
Veröffentlicht unter php, Javascript, Performance, webdev
2 Kommentare
Kreative Attacken mit CSRF
Frei nach der Devise „know your enemy“ möchte ich in diesem Post etwas auf weniger offensichtliche Möglichkeiten eingehen, wie mit CSRF attackiert werden kann. CSRF selbst habe ich übrigens hier genauer erklärt.
1) Feststellen, ob ein Benutzer bestimmte Seiten besucht hat
Es gibt ja bereits seit längerem die getComputedStyle-Technik. Dabei werden Links auf einer Webseite platziert und mittels Javascript ausgelesen, ob diese Links :visited sind. Alter Hut, genauer hier erklärt. Diese Technik ist allerdings in neueren Browsern nicht mehr möglich, die diese das Auslesen des Link-Status verbieten. Trotz allem gibt es noch eine Möglichkeit, um die es hier gehen soll.… Den ganzen Post lesen
Veröffentlicht unter php, Javascript, Security, webdev
Hinterlasse einen Kommentar
Best-of-the-Web 2
Und eine neue Linkserie mit kleinen Web-Leckerbissen, bunt gemischt über MySQL, CSS, PHP und Javascript.
- Can I use? – Welche HTML 5 / CSS 3 – Features sind in welchem Browser bereits implementiert?
- PEAR HTTP Download – Nette Klasse, um sauber und schmerzfrei HTTP Requests / Downloads zu tätigen
- Head JS – Kleines Javascript, was das zusammenfassen von CSS / Javascript ermöglicht + ein paar weitere schöne Features mitbringt.
- PHP dependency strategies – Zusammenfassung von 3 Dependency-Injection Strategien und einigen sinnvollen Lösungsansätzen der mit DI aufkommenden Probleme.
- Web Designer’s Guide to PNG Image Format – Unterschiede der verschiedenen PNG-Abarten klar herausgestellt.
Veröffentlicht unter php, Javascript, Datenbanken, Best of the Web, webdev
3 Kommentare
5 PHP Patterns im Schnelldurchlauf: Factory, Iterator, Observer, Singleton, Strategy
Dieser Post versteht sich ein bisschen als „Reminder“. Bei den folgenden 5 Patterns habe ich in den Codebeispielen besonderen Wert auf Einfachheit gelegt, sodass man ohne große Erklärung gleich sieht, worum es geht. Ich finde es wichtig, sich nach einiger Zeit immer mal wieder die Patterns vor Augen zu halten.
Factory
Eine „Fabrik“ erzeugt je nach Anwendungskontext verschiedene Klassen und gibt diese zurück.
interface IPermission { public function deleteFilePermission(); } class AdminPermission implements IPermission { public function deleteFilePermission() { return true; } } class UserPermission implements IPermission { public function deleteFilePermission() { return false; } } //----------------------------------------------- class UserFactory { public static function build($type) { switch ($type) { case 'admin': return new AdminPermission(); break; case 'user': return new UserPermission(); break; default: throw new Exception("No valid type"); } } } //----------------------------------------------- //admin is allowed to delete files $admin=UserFactory::build("admin"); var_dump($admin->deleteFilePermission()); //bool(true) //user is not allowed to delete files $user=UserFactory::build("user"); var_dump($user->deleteFilePermission()); //bool(false)
Iterator
Das iterieren mit foreach ist durch das Iterator-Pattern auch über eine Klasse möglich – so als ob sie ein Array wäre.… Den ganzen Post lesen
Veröffentlicht unter php, Software Engineering
3 Kommentare
Facebook API – Tutorial
Eins vorweg: Die Facebook API ist so mächtig, dass man locker auf der API basierend ein zweites Facebook hochziehen könnte, was durch die Facebook API gespeist wird. Leider gibt es aber auch zich verschiedene Quellen bei Facebook selbst. Vieles, was dort zu finden ist, ist bereits wieder deprecated und sollte nicht mehr verwendet werden. Ich werde nun sowohl die serverseitige (PHP) als auch die clientseitige (Javascript) Kommunikation mit Facebook anhand von Codeschnippseln beschreiben. Dabei verwende ich nur die Techniken, die laut Facebook noch verwendet werden sollten.
Getting Started
Als allererstes muss mal ein API Key her. Das geht hier. Dabei muss ein „App-Name“ vergeben werden und eine Domain spezifiziert werden.… Den ganzen Post lesen
Veröffentlicht unter php, Javascript, webdev
15 Kommentare
Angriffe auf Webanwendungen – Teil 4: CSRF
Vorherige Teile der Serie
CSRF steht für Cross-Site Request Forgery und läuft komplett beim Opfer ab. Das einzige, was der Angreifer tut, ist dem Opfer einen speziellen Link zuzuschicken. GMail war mal anfällig für CSRF-Attacken. Dass klar wird, was sich genau dahinter verbirgt, gibts erstmal ein Beispiel.
Beispielangriff
Das Opfer ist bei facebook eingeloggt – was man ja sowieso als facebook-User quasi immer ist, auch wenn man nicht auf der Seite selbst unterwegs ist. Jetzt schickt der Angreifer dem Opfer einen durch einen URL-Shortener verschlüsselten Link zu, der aber in echt
http://www.facebook.com?deleteAccount=1… Den ganzen Post lesen
Veröffentlicht unter php, Security, webdev
6 Kommentare
Angriffe auf Webanwendungen – Teil 3: SQL-Injection
Vorherige Teile der Serie
Okay, ich schäme mich fast, darüber noch was zu schreiben. Man möchte doch meinen, dass SQL Injection DER bekannteste Angriff überhaupt ist. Möchte man meinen. Bisher hat sichs aber immer noch nicht bis zum letzten Webentwickler rumgesprochen, weswegen ich hier mal 2 konkrete Beispiele liefere, an denen man herumexperimentieren kann.
Was ist SQL-Inection?
Wenn ein Benutzer der Anwendung die Möglichkeit hat, selbst SQL einzuschleusen spricht man von SQL-Injection. Besonders beliebt sind (gerade in älteren Webanwendungen) das Einschleusen von SQL per $_GET. Beispiel gefällig?
Angriffsszenario 1: Der Login
Eigentlich das Musterbeispiel dafür: Folgender Code wird zum validieren eines Login-Formulars verwendet:
<?php… Den ganzen Post lesen
Veröffentlicht unter php, Security, webdev
2 Kommentare
Angriffe auf Webanwendungen – Teil 2: Session-Highjacking und Session-Fixation
Dieser Post setzt die Kenntnis von XSS und die des PHP Session Managements voraus.
Disclaimer
Ich beschreibe diese Attacke aus Angreifer-Sicht. Wenn man sich in die Rolle des Angreifers hineinversetzen kann, fällt es leichter, weitere Sicherheitslücken zu identifizieren. Ich bin also nicht zur dunklen Seite gewechselt und stifte auch nicht dazu an, es zu tun.
Was ist Session-Highjacking / Session-Fixation
Eigentlich handelt es sich um ganz simple Verfahren. Beim Session-Highjacking versuche ich, an die Session-ID (m)eines Opfers heranzukommen und setze diese Session-ID bei mir selbst. Auf diese Art und Weise gaukle ich dem Server also vor, dass es sich um die selbe Person handelt.… Den ganzen Post lesen
Veröffentlicht unter php, Security, webdev
8 Kommentare