Entries Tagged as 'PHP'

Fliks Coding-Camp in Eckernförde

So heute sind wir also in Eckernförde eingefallen. Morgen geht’s richtig los. Netz funktioniert einwandfrei und ich freue mich auf morgen. Themen werden Frameworks unter PHP und Python sein. Optimierung von Entwicklungszeiten, Wartbarkeit, Performance und möglichst flexibles Entwickeln werden wichtige Kriterien sein. Aber dazu später mehr.

Nach unserer Ankunft – A1 fahren ist kein Spaß: Eine Baustelle nach der anderen (Autofahrt: BO-PC 562 und BO-PC 564)- haben wir uns erstmal häuslich eingerichtet, haben uns leiblich versorgt und etwas entspannt. Nu gehts ab ins Bett sonst wird das morgen nix :)

Rückblick auf meine dritte PHP Conference in Mainz

Nun haben wir also Dienstag und die Konferenz ist schon wieder drei Tage her. Ich möchte aber trotzdem ein kurzes Resümee dazu schreiben, da sie mir alles in allem wirklich wieder sehr gut gefallen hat.

Location:
Mainz ist eine sehr nette Stadt – wobei ich außer der Altstadt und dem Bahnhof römisches Theater nicht so viel gesehen habe von Mainz. Was ich aber gesehen habe gefiel mir sehr gut – die Parkplatzsituation wiederum gefiel mir nicht. Es ist schon schade, dass wir als Teilnehmer der Konferenz nicht kostenlos oder zumindestens ermäßigt im Parkhaus der Rheingoldhalle parken konnten. 14 EUR bis 20:00 Uhr und dann noch Zuschläge ab 20:00 Uhr ist schon etwas sehr hart.

Für meine Geschmack waren deutlich zu viele Tische aufgestellt in den Aufenthaltsbereichen zwischen den Veranstaltungsräumen der Sessions.
Die letzte PHP Conference, welche ich besucht habe fand in Frankfurt in einem Hotel statt. Wir hatten dort ein Zimmer und waren dementsprechend deutlich näher am geschehen. Mal davon ab war die Bar echt klasse ;) [Read more →]

PHP Conference – zweiter Tag

phpconf tag21 PHP Conference   zweiter Tag allgemeinesNun also der zweite echte Tag bei der PHP Conference in Mainz. Ein sehr informativer und auch ruhiger Tag und ich bin tatsächlich dazu gekommen überall meine vollste Aufmerksamkeit den Sprechern zu widmen und nicht der zurückgelassenen Arbeit ;)

Heute waren wir bei folgenden Veranstaltungen/Sessions:
Re-architecting the Web with HTML 5 Communication, Fighting Charsets and Encodings, PHP Development with the NetBeans IDE, Optimizing your Frontend Performance, Lesser known Security Problems in PHP Applications, Alternativen zu XMLHttpRequest

Insgesamt sehr interessant, allerdings abzüglich der Websockets, NetBeans IDE für PHP und Security Problems wenig überraschend. Zu den Themen Websockets und Frontend-Performance (und auch Backend-Performance) werde ich demnächst etwas ausführlicher schreiben hier also nur eine Zusammenfassung von allen Sessions heute

(HTML 5 Websockets möchte ich mir vertiefend anschauen, bevor ich da richtig ins Detail gehe und zu Frontent-Perfomance kann ich glaube ich mittlerweile deutlich mehr schreiben,
als ich heute in der Session gehört habe.)


Re-architecting the Web with HTML 5 Communication

Irgendwie hatte ich mir unter “Re-architecting the Web with HTML 5 Communication” etwas völlig anderes vorgestellt. Das kann daran liegen, dass mir “Re-architecting [...] HTML 5″ deutlich mehr ins Auge gefallen ist als als “Communication”. So war ich dann doch angenehm überrascht, dass es nicht, um eine ausufernde Auflistung der neuen Features von HTML 5 ging, sondern um einen “kleine” aber doch weitreichende Neuerung: Websockets.

Bei Websockets geht es um eine weitreichende Änderung des Kommunikationsansatzes hinter einer Web-Applikation bzw. der Logik welche dahinter steckt (Browser <-> Webserver). Zur Zeit – und das schon seit langer Zeit (Hypertext Transfer Protocol – 1989?) laufen alle Verbindungen über eine halb-duplex Kommunikation) zwischen Browser/Client und Webserver.
Das bedeutet im Klartext gesprochen: Der Browser/Client schickt einen Request an den Webserver und der sendet einen Response zurück – aufeinander folgend und nicht gleichzeitig – das ist langsam und eigentlich wenig zeitgemäß. Jonas Jacobi – der Speaker der Keynote – hatte dazu einen treffenden Vergleich: [Read more →]

PHP Conference – Xdebug

phpconference xdebug PHP Conference   Xdebug allgemeinesAuf meiner ersten PHP Conference Anfang 2007 in Ludwigsburg, habe ich das erste Mal so richtig laut was von Xdebug gehört und war auch gleich sehr angetan davon.
Die Installation auf dem Mac – damals noch ein G4 Powerbook mit Tiger – war eine recht kniffelige Angelegenheit, lies sich aber lösen.

(Irgendwie habe ich – wie so oft – den Zeitpunkt, etwas dazu zu schreiben, verstreichen lassen und das will ich auch jetzt nicht verspätet nachholen, deswegen nur kurz: “Fink, Cachegrind, KCachegrind, X11, Fink Commander” sind einige Stichworte in dem Zusammenhang, welche mich ein paar Stunden meiner Lebenszeit gekostet haben.

Zu guter letzt und nachdem ich KCachegrind über Nacht auf dem Powerbook via Fink installiert hatte und kleinere bzw. größere Probleme aus dem Weg geräumt waren, habe ich Xdebug inklusive Profiling via KCachegrind komplett ans Laufen bekommen.)

Anfang diesen Jahres bekam ich dann mein neues Macbook und ein Leopard als OS dazu. Leider lies sich Xdebug nicht wirklich dazu überreden auf dem Macbook unter Leopard zu laufen und ich konnte nicht schlüssig herausfinden woran es hing. Da mir dann die nötige Zeit fehlte, verabschiedete ich mich vorerst von Xdebug auf meinem lokalen Webserver, zumal wir Xdebug unter Linux auf unserem Entwicklungsserver problemlos nutzen. [Read more →]

PHP Conference in Mainz

php small PHP Conference in Mainz allgemeinesSimon und ich sind zur Zeit in Mainz auf der PHP Conference – meine dritte mittlerweile, wenn ich mich nicht verzählt habe.

Über die Inhalte kann ich noch nicht sehr viel schreiben, da heute der erste echte Konferenztag war, aber es ist deutlich internationaler geworden. Auch zwischen den Sessions und Veranstaltungen dominiert Englisch als Sprache.

Ansonsten ist eigentlich alles wie immer. Wer zuerst kommt ergattert eine der extrem begrenzten Auftankstationen für Notebook-Akkus – auch Mehrfachsteckdosenleisten genannt – und um so tiefer man im Gebäude nach unten wandert, desto schlechter wird das WLAN – wobei das war in Frankfurt genau umgekehrt.
Aber eigentlich ist das vollkommen in Ordnung so. Wir haben bisher immer noch im letzten Moment eine Steckdose gefunden. [Read more →]

Muss einem sowas Sorgen machen? Oder Wordpress macht bäh!

Man installiert also freudestrahlend einen neuen Wordpress-Blog – basierend auf der neuesten WP-Version (2.6) – und begibt sich an die Entwicklung eines kleinen Softlink-Plugins. Weil man ja ordentlich und sauber arbeiten möchte, schaltet man das Error-Reporting vollständig ein.

	ini_set("display_errors", 1);
	error_reporting(E_ALL);

Und was bekommt man neben einem leicht irritiertem Gefühl in der Magengegend und einem kurzen Schreck (sowas wie: Äh das kann aber jetzt nicht von mir sein, weil ich habe doch noch nix ernstes gemacht)?
Eine nette Liste von Notices, die alle den Core von Wordpress betreffen – immerhin ist kein einziges Plugin aktiviert und der Blog noch geradezu jungfräulich, wenn man mal von den zwei Zeilen Code in meinem Plugin absieht, die das Reporting einschalten. [Read more →]

Cookie-gesteuertes ein- und ausblenden von Seitenelementen

Die Elemente der Sidebar meines Blogs und die Jumpbox, werden über script.aculo.us und prototype ein und ausgeblendet. Das alleine ist noch keine Besonderheit bzw. ist es mittlerweile wohl nicht mehr.

Ich habe das ganze jetzt durch ein Funktionalität bzw. durch ein Skript erweitert, welches die Sichtbarkeitseinstellungen, die ein Besucher meines Blogs macht, bzw. für sich setzt durch ein-/ bzw. ausblenden der einzelnen Elemente, in einem Cookie speichert. Mir war wichtig, dass zum einem die Einstellungen des Users in einem Cookie gespeichert werden und zum anderen diese Daten möglichst einfach aus dem Cookie über PHP ausgelesen werden können.
Dazu nutze ich eine Funktion, die einen Array in einen serialized Array, sprich einen String umwandelt, der über die PHP-Funtion “unserialize” wieder in einen Array zurückumgewandelt werden kann und somit die jeweiligen Elemente ein- bzw. ausgeblendet dargestellt werden, wenn die Seite neu geladen wird.

Das Javascript bietet zum einen ein paar Standard-Funktionen, um ein Cookie zu schreiben, zu löschen, auszulesen und ein Wert in einem Cookie mit einem serialized Array zu ändern oder zu löschen. script.aculo.us benutze ich in diesem Zusammenhang nur für die grafischen Effekte – sprich das ein- und ausblenden von Elementen.

Kurze Einbauanleitung:

Nun ersteinmal benötigen wir einen Layer, der ein- und ausgeblendet werden soll, mit einer eindeutigen(unique) ID. Sprich irgend ein Div-Layer, welcher Inhalt umschließt, der ein- und ausgeblendet werden soll. Dort setzen wir als Attribut eine ID.

id="unique_id_1"

Dann brauchen wir noch einen Link, über den wir diesen Layer ein-/ und ausblenden können und der onclick einen Event auslöst (Könnte auch im href stehen – mag ich aber nicht so).

onclick="swap_content('unique_id_1');"

Da die ganze Funktionalität ein Cookie für 14 Tage speichert und es bei erneutem Besuch innerhalb dieses Zeitraums, sprich der 14 Tage, erneuert für weitere 14 Tage, benötigen wir noch diesen Funktionsaufruf (am sinnvollsten onload auf jeden Fall aber zu Beginn des Seitenaufbaus bzw. der XHTML-Struktur): [Read more →]

Post von Kasper Skårhøj

Nachdem Korrupt und ich, Kasper eine Mail zu der Möglichkeit von XSS (Cross Site Scripting)-Attacken über tipafriend in Typo3 geschrieben haben ist gestern dann tatsächlich eine Antwort ins Haus geflattert.Was mich ein wenig verwundert, ist, das er schreibt das er Typo3 nicht berührt sieht von diesem Problem, da Typo3 ein sehr hohes Sicherheitsniveau hat.

Generally, TYPO3 has a high security level and I don’t see that affected by this issue.

Mittlerweile gibt es einen Bugfix zu diesem Problem auf typo3.org und eine kurze News dazu gibt es auch. Allerdings ist es völlig falsch, wie in der News geschrieben wird, dass es nicht möglich sei/gewesen sei Javascript-Code auszuführen, denn ich konnte auf etlichen Seiten Cookies auslesen über eingefädelte Javascripts und hätte diese Daten ohne weiteres bei mir in der DB loggen können. Wenn ich dazu komme, werde ich mal ein kleines Beispiel dazu posten. Wobei die eigentliche Problematik von XSS ja auch mehr in der Veränderung von Seiten zum Erwerb vertraulicher Daten von unbedarften Internet-Nutzern liegt.

Da bin ich anderer Meinung. Man muss nur kurz überlegen, in wie weit es in der Hand eines Entwicklers einer Extension liegt, ob und wie er Sicherheitsmechanismen von Typo3 nutzt oder nicht oder ob er einfach GET-Parameter z.B. direkt abgreift und wieder ausgibt, ohne sie auf die Validität und Sicherheit der Daten zu überprüfen.
Ins Repository stellen kann er seine Extension aber trotzdem und so lange das mit dem Review nicht so richtig anläuft auf typo3.org wird es auch immer einen Nutzer geben, der diese Extension downloaden und installieren wird.
Von Programmierung hat er gerade so viel Ahnung, dass er seine Extensions ans laufen bekommt. Den Quellcode einer Extension schaut er sich nicht an – wozu auch, er versteht ihn doch nicht. Er vertraut also auf die gewissenhafte Arbeit des Entwicklers – gewissenhaft sollte sie auch sein, aber ob sie es immer ist???

Klar. Ich bin sicher, das Typo3 einen hohen Standard an Sicherheit bietet, allerdings finde ich diese Antwort etwas blauäugig und etwas arrogant, wenn ich ehrlich bin.

Trotzdem bin ich aber dankbar, dass er zurückgeschrieben hat. Ich werde jetzt eine Mail ans Security-Team schicken und hoffe, dass ich dort eine etwas genauere Auskunft bekomme, die etwas mehr ins technische Detail geht – Vielleicht mit einem cc an Kasper…;)

Ach und noch was: wenn Kasper nicht mehr zuständig ist, sollte man ihn vielleicht als Author entfernen, bzw. als Zusatz den, der die Extension betreut mit aufführen.

Nachtrag: Der Link für das Bugfix funktioniert zur Zeit nicht nicht. Etwas schade…

Links zum Thema:
Aktuelles zu: Typo3/Extensions und XSS
XSS – Cross Site Scripting – Problematik bei typo3/tipafriend
gulli.com: Cross-Site-Scripting in Extensions schafft Angriffsmöglichkeiten
wikipedia zu XSS

TYPO3 3.8 (mit realurl) liefert keinen echten 404er

Weil ich es kürzlich nochmal gelesen habe in einer Mailingliste:
Typo3 in der Version 3.8 liefert keinen 404er als header, wenn man eine Fehlerseite definiert hat. z.B. im Setup eine HTML-Seite für die 404-Ausgabe eingestellt hat.

Typo3 leitet dann zwar brav auf die entsprechende Seite um, wenn es keine passende definierte Seite finden kann, aber als header wird ein “HTTP/1.1 200 OK” ausgeliefert und kein “HTTP/1.1 404 Not Found“, was natürlich nicht nur unschön ist, sondern eher fatal ist.

Ein einfacher, wenn auch nicht 100%tig schöner Weg ist es, das ganze in dem für die Frontend-Funktionen zuständigem File “class.tslib.php” zu beheben. Einfach zu Beginn der Funktion “pageNotFoundHandler()” folgende Zeile einfügen:

header("HTTP/1.1 404 Not Found");

Damit ist dies Sache dann erledigt und es wird auf jeden Fall ein 404er ausgeliefert, wenn eine Seite nicht existiert. In wie weit das noch ein Problem unter Typo3 4.0.1 ist, kann ich noch nicht sagen, werde ich aber über das Wochenende herausfinden, da ich dann an meiner Website weiterarbeiten werde.

Aktuelles zu: Typo3/Extensions und XSS

Vor knapp einer Woche hat Korrupt von gulli.com und habe ich eine Email an Kasper Skårhøj geschrieben, um von ihm ein Statement zu XSS und Typo3 bzw. zu einer XSS-Lücke in der Extension “tipafriend” zu bekommen.

Außerdem hätten wir ihn gerne zu Lösungsansätzen zu diesem Thema befragt. Leider hat er bisher nicht geantwortet und deswegen hat Korrupt heute eine News zum Thema rausgehauen, obwohl er lieber erst auf einen Patch und ein Statement von Kaspers Seite bzw. von Typo3s Seite gewartet hätte.

Eigentlich sehr schade. Aber vielleicht kommt ja doch noch was aus dieser Richtung. (Hintergründe, siehe auch hier)