PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘Server-Software’ Category

HSTS – HTTP Strict Transport Security: Hast’s schon?

with 4 comments

Secure HTTPSHSTS steht für HTTP Strict Transport Security und ist ein HTTP-Header, den Webseiten nutzen sollten die per HTTPS erreichbar sind.

Wenn ein Benutzer in seinen Browser „webseite.de“ eintippt wird der Browser zuerst versuchen die Webseite unverschlüsselt per HTTP zu erreichen. Genau das ist aber ein Schwachpunkt wenn man sich in einem unsicheren Netzwerk aufhält oder befürchtet, dass irgendwo auf dem Weg zum Zielserver jemand den Request abfangen und verändern könnte (Hallo NSA!), dann sollte man vermeiden eine Webseite unverschlüsselt per HTTP aufzurufen die auch per HTTPS erreichbar ist. Dazu gibt es beispielsweise das Firefox-Addon HTTPS Everywhere, in dem eine Liste eingebaut ist mit Domains, die besser verschlüsselt angesurft werden sollten. Wer nicht auf dieser Liste enthalten ist oder auch Besuchern, die dieses Firefox-Addon nicht installiert haben, mehr Sicherheit bieten möchte, nutzt HSTS.

Fast niemand tippt bei einer Seite, die per HTTPS erreichbar ist, immer brav manuell „https://webseite.de“ ein, die meisten schreiben einfach „webseite.de“ und werden dann vom Webserver automatisch auf die HTTPS-Variante weitergeleitet.

Weiterlesen »

Written by Michael Kliewe

November 25th, 2013 at 10:42 am

SQL richtig schreiben: Ausnutzung von Indizes

with 6 comments

PerformanceUm SQL kommt man in der heutigen Webentwicklung nicht herum, und jeder von uns kann SQL-Queries erstellen. Doch nicht jeder SQL-Query, der das korrekte Ergebnis zurückliefert, ist optimal aus Sicht der Performance. Hier ein kleines Beispiel:

Wir haben folgende Tabelle:

CREATE TABLE IF NOT EXISTS `Login` (
  `LoginId` int(11) NOT NULL AUTO_INCREMENT,
  `UserId` int(11) NOT NULL,
  `LoginDateTime` datetime NOT NULL,
  PRIMARY KEY (`LoginId`)
)

Nehmen wir an in der Tabelle sind 10.000.000 Zeilen. Es sind 10.000 verschiedene UserIds enthalten und jeder User hat im Schnitt 1.000 Logeinträge in den letzten 3 Jahren produziert. Die Tabelle enthält erstmal keine Indizes.

Die Aufgabe ist die folgende: Hole alle Logeinträge die in den letzten 30 Minuten stattgefunden haben.

Die Queries

Weiterlesen »

Written by Michael Kliewe

März 27th, 2013 at 10:10 am

SPDY Verbreitung: Facebook nun auch

without comments

Facebook hat es noch nicht offiziell announced, aber seit kurzem ist Facebook auch via SPDY erreichbar. Die Browserverbreitung von SPDY ist mittlerweile recht gut, auch wenn Safari und der Internet Explorer noch hinterherhängen. Gerade die wichtigen mobilen Browser, bei denen es besonders große Vorteile hat, ist die Verbreitung recht gut.

Wie SPDY auf Serverseite aktiviert wird habe ich für den nginx-Webserver bereits im Juni letzten Jahres geschrieben, aber auch Lösungen mit HAProxy oder Apache mod_spdy sind möglich.

Weiterlesen »

Written by Michael Kliewe

März 6th, 2013 at 9:52 pm

Posted in Server-Software

Tagged with ,

Die CouchDB Datenbanken komprimieren

without comments

Heute gibts ein kleines Hilfsscript für all diejenigen, die eine CouchDB einsetzen und noch nicht den neuen Auto-Compaction-Dienst nutzen (können) den Version 1.2.0 mit sich bringt. Compaction benötigt man bei CouchDB um die Datendateien klein zu halten, denn CouchDB ist append-only, d.h. alle Aktionen werden hinten angehängt, insgesondere auch Updates und Deletes. Dadurch wachsen die Datenbank-Dateien mit der Zeit an und beinhalten einen Großteil alter Daten, die schon längt invalide sind. Mit Compaction wird die Datei einmal neu geschrieben mit nur dem aktuellen Inhalt.

Das folgende Script durchläuft eine Liste von Datenbanken und komprimiert sie, inklusive einem vorhandenen View. Dass es für den Einsatz in eurer Umgebung angepasst werden muss versteht sich von selbst, man könnte es z.B. auch noch so erweitern dass man erst eine Liste aller Datenbanken abruft und darüber iteriert, und auch eine Liste der jeweiligen Views holt und darüber iteriert. Für mich jedoch reichte für den einmaligen Einsatz vor der Migration zu 1.2 eine relative starre Liste.

Weiterlesen »

Written by Michael Kliewe

Februar 27th, 2013 at 11:51 am

Bei jeder eingehenden E-Mail ein PHP Script ausführen

with 12 comments

Nach einer kleinen Weihnachtspause gibts heute einen kleinen Trick, um bei jeder eingehenden E-Mail ein PHP-Script aufzurufen. In diesem Script kann man beispielsweise die E-Mail verändern, parsen und Informationen auslesen, den Inhalt in eine Datenbank packen oder andere nette Sachen, die man mit E-Mails machen kann.

Die Methode die ich normalerweise dafür nutze ist ein kleines Cronjob-Script, das periodisch auf dem IMAP-Server nachschaut ob eine neue E-Mail da ist, und dann wird der Inhalt der E-Mail abgeholt.

Postfix anpassen

Heute möchte ich eine Alternative vorstellen, die in Echtzeit die E-Mail empfängt und sie vor der Ablage im Postfach sogar noch verändern kann. Es gibt allerdings einen großen Nachteil: Man muss Zugang zum Mailserver haben, sprich per SSH auf den Server können und die Konfiguration von Postfix ändern können. Aber der Reihe nach.

Zuerst benötigen wir einen neuen Transport in Postfix, der ein Shellscript aufruft. Dazu muss die folgende Zeile in die master.cf eingefügt werden (Ordner: /etc/postfix):

Weiterlesen »

Written by Michael Kliewe

Januar 11th, 2013 at 8:31 am