PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for August, 2011

Die Reporting-Funktion der Content-Security-Policy (CSP)

with 11 comments

CSP hatte ich vor fast 2 Jahren bereits vorgestellt, mittlerweile hat es eine gute Verbreitung gefunden, sodass wir uns nochmals die Details anschauen. CSP ist ein Header, den der Server an den Browser schickt, und darin festlegt, von wo Javascripte, Bilder, CSS, Media-Dateien und mehr geladen werden dürfen. Mit sinnvollen Einstellungen ist es möglich, Cross Site Scripting (XSS) sowie Clickjacking zu verhindern, eine dieser essenziell wichtigen Einstellungen ist das Verbot von Inline-Javascript. Falls also ein Angreifer Javascript beispielsweise in die Datenbank einfügen kann, und bei der Ausgabe nicht oder falsch escaped wird, wird das Inline-Javascript das der Angreifer platziert hat nicht ausgeführt, XSS ist effektiv unterbunden.

In der Apache Konfiguration kann das beispielsweise so aussehen:

<VirtualHost *:80>
    DocumentRoot /path/to/wwwroot
    ServerName domain.de

    Header add X-Content-Security-Policy "allow 'self'; img-src images.domain.de; script-src static.domain.de;"
</VirtualHost>

oder hier mittels PHP gesetzt:

<?php
header("X-Content-Security-Policy: allow 'self'; img-src images.domain.de; script-src static.domain.de;");

Sollten nun Bilder oder Javascripte eingebunden sein die nicht von den angegebenen Domains kommen wird der Browser sie blockieren und nicht laden. Es gibt neben img-src und script-src auch noch frame-src, xhr-src und weitere.

Weiterlesen »

Written by Michael Kliewe

August 30th, 2011 at 8:52 am

Zend_Config_Ini, Arrays und die Vererbung

with 8 comments

Ich mag .ini Konfigurationsdateien, und deshalb nutze ich auch bei Zend Framework Projekten immer die application.ini . Damals habe ich gelernt dass man Arrays so definiert:

[production]
...
server.0 = 192.168.0.1
server.1 = 192.168.0.2

[development : production]
…
server.0 = 10.0.0.1
server.1 = 10.0.0.2

Im ZendFramework Code kann ich dann das server-Array so nutzen:

Weiterlesen »

Written by Michael Kliewe

August 29th, 2011 at 9:41 am

Präsentationen der FrOSCon 2011

with 4 comments

Letztes Wochende fand die alljährliche FrOSCon in Sankt Augustin statt. Es gab einen speziellen PHP Raum, und demnach auch einige PHP Talks sowie einige verwandte Präsentationen in anderen Räumen, ich versuche die interessantesten hier aufzulisten:

Singletons in PHP – Why they are bad and how you can eliminate them from your applications
Gordon Oh.

Session Management für skalierbare Web Projekte
Martin Schönert

Modern PHP graphics with Cairo
Michael MacLean

Weiterlesen »

Written by Michael Kliewe

August 27th, 2011 at 11:43 am

Posted in PHP

Tagged with , , ,

PHP und Apache Versionen von PHP Blogs

with 17 comments

Ich habe mal einen kleinen Test gemacht: Ich habe die PHP-Blogs aus meiner großen PHP-Blog Sammlung genommen, dazu noch einige Ergebnisse wenn man nach „php blog“ googled, und mir die PHP-Versionen angeschaut, wenn welche angegeben sind. Und bei einigen kann ich nur mit dem Kopf schütteln.

Aktuell sind zur Zeit: PHP 5.3.8 und PHP 5.2.17, wobei 5.2.x nicht mehr supported wird. PHP 5.3 ist also eigentlich Minimum.

Von denen, die ihre PHP Version bekanntgeben sind nur 5 Seiten mit PHP 5.3.x unterwegs. 17 mit PHP 5.2.x, PHP 5.0 ist mit einem Eintrag vertreten, und PHP 4.4 benutzen sogar noch 2 Leute. Ich kann nur hoffen dass letztere ihre Ausgabe faken und dass das nicht wirklich korrekte Informationen sind. Wobei 4.4.9 neuer ist als 5.2.0 . Beim Apache sind die meisten auf Apache 2.2 angelangt, aber auch dort gibt es alte Versionen von 2.2 die Sicherheitslöcher haben, und auch Apache 2.0 und Apache 1.3 Installationen. Apache 2.2.3 ist beispielsweise über 5 Jahre alt.

Wenn ihr schon alte PHP- und Apache-Versionen einsetzt, dann schaltet wenigstens die entsprechenden Header aus in der php.ini:

expose_php Off

bzw. beim Apache:

ServerSignature On|Off|EMail
ServerTokens Minimal|ProductOnly|OS|Full

oder noch besser: UPDATEN!! PHP 5.3 gibt ca. 20-30% Performance frei Haus, ganz zu schweigen von den neuen Möglichkeiten und den geschlossenen Sicherheitslücken. Wenn euer Hoster nicht updaten möchte oder kann, dann wechselt den Hoster…

Hier die Ergebnisse:

Weiterlesen »

Written by Michael Kliewe

August 26th, 2011 at 9:55 am

Das Problem mit HEAD Requests in PHP

with 25 comments

Ich bin gerade auf ein interessantes Verhalten gestoßen das eventuell große Probleme bereiten kann. Wahrscheinlich nur sehr wenige von euch werden das hier wissen, trotzdem ist es sehr interessant und provoziert eventuell Probleme und Sicherheitslücken.

Das hier vorgestellte Verhalten ist wahrscheinlich kein Problem von PHP sondern eventuell vom Webserver, aber ich weiß es nicht genau. Vielleicht kann ja mal jemand mit Tomcat oder nginx dieses Problem nachstellen.

Wir nehmen folgendes Script als Beispiel:

<?php
file_put_contents('/tmp/outp', '1');

echo 'start';
file_put_contents('/tmp/outp', '2', FILE_APPEND);
echo 'ende';

Ich glaube ihr stimmt mir alle zu wenn ich behaupte: Das Script erstellt immer eine Datei mit dem Inhalt „12“. Es kann zum Beispiel nicht passieren dass nur „1“ in der Datei steht.

Weiterlesen »

Written by Michael Kliewe

August 25th, 2011 at 1:53 pm

Posted in PHP,Server-Software

Tagged with , ,