Archive for the ‘Allgemein’ Category
XSS-Angriffe erschweren mit CSP, der neuen Idee von Mozilla/Firefox
Die Entwickler bei Mozilla haben hart gearbeitet und sich eine gute Strategie ausgedacht, wie man in Zukunft Cross-Site-Scripting (XSS) erschweren kann (Achtung: unterbinden wird man es (noch) nicht können!). Viele Browserhersteller loben die Firefox-Entwickler dafür und werden die Funktionalität auch einbauen, um das Web ein wenig sicherer zu machen.
XSS ist im Grunde das böse Einfügen von externem Javascript-Code, um im Kontext einer Webseite schädliche Funktionen aufzurufen. XSS-Angriffe haben in den letzten Jahren massiv zugenommen und sind mittlerweile auf Platz 1 der Hitliste aller Internet-Angriffe. Ein einfaches Beispiel ist das folgende:
Nehmen wir an, wir haben ein Gästebuch (oder ein Blog, einen Chat oder irgendeinen anderen Web 2.0 Dienst erstellt, wo User eigenen Content beisteuern können) programmiert, und wir haben bei der Programmierung nicht aufgepasst. Nehmen wir an, wir hätten auf Serverseite bei irgendeinem Formular-Script das Entschärfen der POST-Variablen vergessen, sodass alles, was ein User im Formular eingibt, später auf der Seite von anderen Usern gelesen werden kann.
Mein Pagerank
So langsam scheint Google zu merken, dass mein Blog wichtig ist! 😉
Am 17.09. war ich noch auf Platz 149 zu finden, wenn man nach „php blog“ sucht.
26.09. Platz 95
29.09. Platz 52.
06.10. Platz 46
02.11. Platz 48
Ich bin mir noch nicht ganz sicher, warum das gerade stagniert.
Aber es gibt einen Grund zu feiern: Mein Pagerank ist am vergangenen Wochenende von 0 auf 2 gestiegen! Yeah!
Mein gesetztes Ziel sind die Top 10 beim Suchbegriff „php blog“. Ich nehme Tipps immer gern entgegen, wie ich das schaffen kann. Es gibt nämlich viele andere gute PHP-Blogs, und an denen vorbeizuziehen wird nicht einfach. Außerdem sind einige Verzeichnisdienst- und Katalog-Einträge vor meiner eigentlichen Website, was ich gern auch noch beheben würde. Mal sehen.
Der beste Tipp ist wahrscheinlich, mehr gute Artikel zu schreiben. Daran arbeite ich *Schweiss von der Stirn wisch*.
Hier gibt es übrigens Informationen über den Google Pagerank und wann genau die Updates stattfinden. Ich bin ja sehr gespannt ob der Pagerank Ende des Jahres abgeschafft wird, die Diskussion läuft ja gerade (mal wieder).
Bessere Performance mit einem Reverse Proxy
In diesem Artikel geht es nicht um PHP, sondern darum, wie man ein PHP-Applikation via Webserver einer großen Besuchermenge zugänglich macht. Der Standard ist aktuell ein Apache (1.3 oder 2.x), der PHP beherrscht (via mod_php oder FastCGI). Darüber kann man dann wunderbar die Webseiten „serven“.
Doch was tut man, wenn durch eine große Besucheranzahl der Webserver droht, in die Knie zu gehen? Der Apache ist sehr vielseitig, reich an Features, stabil und eigentlich nicht wegzudenken. Doch genau diese Vielseitigkeit und der Feature-Reichtum sind ein Nachteil. Er verbraucht außerdem sehr viel Speicher bei hoher Belastung, sprich vielen tausend Verbindungen.
Deshalb stellt man einen Reverse-Proxy vor den Apache-Webserver. Häufig können diese Proxys auch gleich noch die SSL-Verbindung terminieren, Cachen, und mehr oder minder umfangreiches Loadbalancing.
Einige Bereiche einer Webseite benötigen keinen voll ausgestatteten Apache-Boliden, es reicht ein einfacher, kleinerer Webserver. Dazu gehören alle statischen Inhalte, wie Bilder, Javascripte, CSS und statisches HTML.
Außerdem bereiten langsame Clients Probleme bei großen Webseiten. Wenn viele langsame Clients die Apache-Prozesse am Leben halten, weil die Bytes nur langsam durch das Netz tröpfeln, können andere Requests nicht bedient werden. Ein leichtgewichtiger Reverse-Proxy löst dieses Problem.
Sicher ist euch Squid ein Begriff. Squid kann sowohl als Proxy und auch als Reverse Proxy genutzt werden. Squid ist aber so umfangreich und schwer zu konfigurieren, dass er kaum zum Einsatz kommt als Reverse Proxy.
lighty (lighttpd) dürfte auch vielen bekannt vorkommen. Er hat sehr wenig Ressourcenanforderungen an CPU und Speicher, läuft auf High-Traffic-Seiten wie Youtube, Wikipedia, Pirate Bay, Imageshack und weiteren.
Ein weiterer interessanter leichtgewichtiger Webserver ist nginx (gesprochen: engine-x). nginx ist neuer, bietet auch eine großartige Leistung wie Lighty (je nach Einsatzgebiet unterschiedlich, aber auf gleichem Niveau; auf jeden Fall Klassen besser als Apache). Seiten wie WordPress.com, Github, SourceForge und vielen weiteren werden von nginx bereitgestellt. Mehr als 5% aller Webseiten laufen mittlerweile durch einen nginx!
Hier scheiden sich die Geister, welcher von beiden nun besser ist. Wenn man sich mal 1-2 Stunden im Internet umschaut, sind 60% für nginx und 40% schwören auf lighttpd. Das größte Problem des Lighty ist wohl sein Memory-Leak-Problem, jedenfalls liest man das recht häufig von Umsteigern. Deshalb verlassen viele nun das Lager in Richtung nginx.
Im Anhang habe ich auch noch einige Seiten aufgelistet, die sich mit Vergleichen (Features, Performance) beschäftigt haben.
Die größten Vorteile: sehr geringer Speicherverbrauch, der auch nicht wächst bei sehr vielen Verbindungen, da es sich um eine „event-driven architecture“ handelt, anders als der Prozess/Thread-getriebene Apache. Ideal für kleine statische Dateien und als Reverse Proxy.
Mit nginx hat man auch einen Loadbalancer, der RoundRobin, weighted RoundRobin, Heartbeat-Funktionalität(er merkt, wenn ein Backend-Server tot ist) uvm bietet. Er kann selbst Dateien zur Verfügung stellen oder aber an einen/mehrere Apache weitergeben. Man kann ihn auch zum Cachen benutzen, er unterstützt nativ den Memcached.
Hier gibt es auch einen schönen Bericht darüber, wie nginx als IMAP/POP/WEB/SMTP Proxy betrieben werden kann. 10.000 IMAP-Verbindungen, einige davon SSL, und dann nur 10% CPU Last finde ich beeindruckend.
Man kann auch den kompletten Apache abschaffen und PHP unter nginx betreiben, hier eine kleine Anleitung für Debian. Hier ist noch eine sehr schöne Anleitung, die alle Funktionen beleuchtet incl. Konfigurationszeilen. Es gibt viele dutzend Module, mit denen man nginx erweitern kann, dazu einfach das englische nginx-Wiki durchstöbern.
Ich habe selbst noch keinen nginx laufen, da ich keinerlei Webseite im Internet betreibe, wo sich der „Aufwand“ eines Reverse Proxy lohnt. Aber in naher Zukunft werde ich wahrscheinlich mit dem Thema konfrontiert, eine High-Traffic-Seite mit aufbauen zu können. Und da werden wir sicher einen Reverse-Proxy einsetzen.
Falls jemand Erfahrungen im High-Traffic-Bereich hat, möge er gern seine Meinung dazu kundtun, ich würd mich freuen!
—————————————
Es gibt viele Vergleiche zwischen Apache, Lighty und nginx. Hier einige Quellen (googlen geht natürlich auch):
http://www.wikivs.com/wiki/Lighttpd_vs_nginx
http://hostingfu.com/article/nginx-vs-lighttpd-for-a-small-vps
http://royal.pingdom.com/2008/04/17/alternative-web-servers-compared-lighttpd-nginx-litespeed-and-zeus/
http://barry.wordpress.com/2008/04/28/load-balancer-update/ incl. Kommentare
http://www.joeandmotorboat.com/2008/02/28/apache-vs-nginx-web-server-performance-deathmatch/
Gewinnspiel: Zend Framework Poster
Ich habe noch ein Zend Framework Poster von mayflower zu verschenken. In der Firma habe ich bereits eins an die Wand gepinnt, und jetzt ist mir noch ein zweites in die Hand gefallen.
Wenn ihr es kostenlos zugeschickt haben wollt, müsst ihr nur eine der folgenden Bedingungen erfüllen:
- Einen schönen Gastartikel hier im Blog verfassen (bei mir via Email melden, wenn ihr das machen wollt
). Diese Möglichkeit verdoppelt die Gewinnchance!
- Ihr schreibt in eurem Blog ein paar Zeilen über den Artikel meines Blogs, den ihr am interessantesten gefunden habt
- Ihr schreibt in die Kommentare, wieviele iPhone-Apps aktuell im Repository-Browser von Appstarz sind (Wer nicht weiß, was Appstarz ist, kann danach googlen)
- Ihr schreibt ein paar nette Zeichen über meinen Blog in Twitter. Ihr müsst dafür mindestens 50 Follower haben.
Falls euch noch etwas anderes einfällt, womit ihr mich überzeugen könnt, packt es in die Kommentare.
Hinterlasst bitte euren Namen hier in den Kommentaren, damit ihr an der Verlosung teilnehmt und ich euch kontaktieren kann. Die Verlosung wird am 11.10.2009 stattfinden. Ihr habt also 2 Wochen Zeit. Es wird wieder mein Zufallsgenerator der letzten Verlosung zum Einsatz kommen.
Viel Glück!
Optimierung meines Blogs
SEO ist in aller Munde. Es gibt Millionen von SEO-Experten, die einen „100%-ig auf Platz 1 bei Google“ bringen können. Natürlich für viel Geld, und mit komischen, teils verbotenen Methoden.
Ich verlasse mich da lieber auf die kleinen Tipps und Tricks, die man so liest, und die auch Sinn machen. Auch Google gibt Webmastern Tipps, um ihre Seiten gut indizierbar zu machen, und so einen guten Pagerank zu erhalten. Interessante Hintergrund-Informationen gibt es zB bei Google’s Webmaster Tools.
Ich möchte hier keine riesen Sammlung eröffnen, sondern nur das WordPress-Plugin „All in One SEO Pack“ vorstellen. Dieses Plugin hilft dabei, auf jeder Seite unterschiedliche und vor allem passende Keywords und Descriptions setzen zu lassen (automatisch extrahiert aus dem Artikel-Text). Auch den Titel kann man auf jeder Seite anpassen lassen. Des weiteren unterstützt es die Möglichkeit, doppelte Inhalte unter verschiedenen URLs zu vermeiden mit dem „canonical“-Tag.
Damit sind die wichtigsten Dinge erstmal abgedeckt. Alle anderen Meta-Tags sind heutzutage relativ unwichtig geworden, jedenfalls liest man das oft.
Schaut es euch selbst an, ich finde es sehr hilfreich, und werde es auch vorerst dabei belassen.
So sehen die Optionen aus: