PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘PHP’ Category

Schöner hashen mit bcrypt

with 94 comments

Gastartikel von Oliver Sperke.

Ich bin 34 Jahre alt und seit 10 Jahren selbständiger Webentwickler. Mein Fokus liegt dabei auf der Erstellung, Beratung und Optimierung in den Bereichen High Performance, Usability und Sicherheit in den gängisten Internetsprachen: PHP, HTML, Javascript und CSS.

Bei meinem vorherigem Gastbeitrag wurde ich direkt im ersten Kommentar aus meiner heilen Welt geworfen. Dort stand nämlich folgender „erschütternder Kommentar“ zu lesen:

Das du Salting und Mehrfachhashing predigst, während der Rest der Welt schon einen Schritt weiter zu bcrypt geht… Traurig.

Nun ja, dazu möchte ich drei Dinge sagen.

  1. Ich predige nicht (Ausnahme: „Es heißt Standard, verdammt, nicht Standart!“).
  2. Ach, wenn die Welt schon mal auf dem Stand des einfachen md5 wäre …
  3. Bcrypt verdient einen eigenen Beitrag.

Natürlich hatte der Autor völlig recht. Über Hashfunktionen im Web zu schreiben und bcrypt nicht zu erwähnen ist fast schon schändlich. Also bcrypt ist eine Hashfunktion, die auf Langsamkeit optimiert wurde. Um genauer zu sein, es ist nicht mal ein richtiger Hashalgorithmus, sondern eine Blowfish Verschlüsselung, bei der am Ende „die Schlüssel weggeworfen werden“, daher lässt sich das Ergebnis nicht mehr entschlüsseln. bcrypt ist eine Weiterentwicklung der „Traditional DES Scheme“ Funktion aus der Unixwelt. Obwohl dieses Verfahren 30 Jahre lang (!) gute Dienste geleistet hat, stellen sich so langsam „Alterserscheinungen“ ein. Der Zahn der Zeit nagt auch hier in Form von gestiegener Rechenleistung.

Kurze Rückschau

Weiterlesen »

Written by Oliver

Juli 18th, 2011 at 8:56 am

Posted in Linux,PHP

Tagged with , , , ,

Linkpool Nummer 18

without comments

Ergänzend zum Blog-Artikel „Sichere Passwörter“ diese Woche:

7 Hinweise, eine sichere PHP Applikation zu erstellen:

In 5 Schritten zur „Offline-HTML5-Web-App“:

Wie man Zend_Config beschleunigen kann:

Cross-Site-Scripting(XSS) Lücke in Skype:

Mozillas Alternative zu OpenID: BrowserID

Written by Michael Kliewe

Juli 16th, 2011 at 11:20 am

Posted in Javascript,PHP

Tagged with , ,

2. Phase des Ticketverkaufs der PHP Unconference 2011 in Hamburg

with 6 comments

Heute um ca. 14 Uhr beginnt die zweite Phase beim Verkauf der Tickets für die PHP-Unconference 2011 in Hamburg, die nächsten 100 Tickets kommen unter den Hammer. Ich kann jedem empfehlen dort hinzufahren, 35 Euro ist für eine PHP-Konferenz ein super Preis, dafür gibt es eine Menge Talks und 300 PHP Interessierte, viel Zeit und Möglichkeiten zum netzwerken. Und da bei einer Unconference die Talks von den Teilnehmern gehalten werden sind immer sehr interessante und neue Themen dabei. Wer selbst einen Talk halten möchte (es gibt meistens schöne Sachpreise am Ende für die Speaker) kann sein Thema auf der bald öffnenden „Contributor“-Seite eintragen. Welche Talks dann wirklich gehalten werden wird am ersten Tag der Unconference (am 10.09.) demokratisch gewählt.

Mich wird man dort wieder antreffen können, ich habe bereits in Phase 1 ein Ticket bekommen. Einfach ansprechen wenn ihr mich seht 😉

Written by Michael Kliewe

Juli 15th, 2011 at 9:17 am

Posted in PHP

Tagged with , , ,

Slides der International PHP Conference 2011 Spring Edition

without comments

Berlin, Mai 2011. Die International PHP Conference Spring Edition fand wieder statt im Maritim proArte Hotel. Übrigens können bereits Tickets für die IPC11 im Oktober (9.-12.) gekauft werden, es läuft gerade die „Very Early Bird“ Phase, das Ticket ist günstiger und es gibt ein Netbook geschenkt.

29. Mai 2011

RIA – Entwicklung mit Ext JS
Dominik Jungowski

XP Practices
Sebastian Schürmann

Git for Subversion Users
Stefan Koopmanschap

DevOps für PHP
Johann-Peter Hartmann

30. Mai 2011

Weiterlesen »

Written by Michael Kliewe

Juli 14th, 2011 at 9:55 am

Per Index auf einen assoziativen Array zugreifen

with 13 comments

Hä? Was ist das denn für eine Überschrift? Das geht doch garnicht! Richtig, normalerweise geht das nicht, aber mit etwas tricksen schon.

Wir haben das folgende Array und möchten den 4. Wert haben, ohne aber den Key zu kennen. Bei einem 0-basierten Array wäre es also das Element mit dem Index 3:

<?php

$array = array(
    '10.07.2011' => 14,
    '11.07.2011' => 51,
    '12.07.2011' => 46,
    '13.07.2011' => 9,
    '14.07.2011' => 20,
    '15.07.2011' => 37,
);

echo $array[3];

Wie zu erwarten erhalten wir eine Notice und keinen Wert:

Notice: Undefined offset: 3 in test.php on line 12

Doch wie kommen wir nun an das 4. Array-Element? Ich habe 3 Möglichkeiten für euch, zuerst die unschönen:

$i=0;
foreach ($array as $a) {
    if ($i == 3) {
        echo $a;
        break;
    }
    $i++;
}

Bei einem großen Array ist diese Methode natürlich sehr langsam. Vergleichbar schlecht der folgende Code:

for ($i=0; $i<3; $i++) {
    next($array);
}
echo current($array);

Besser ist die folgende Lösung:

echo current(array_slice($array, 3, 1));

Wer kennt noch eine?

Edit:

Zwei weitere Lösungen aus den Kommentaren, wahrscheinlich irgendwo in der Mitte anzusiedeln was die Geschwindigkeit bei sehr großen Arrays angeht:

$values = array_values($array);
echo $values[3];

Mit PHP 5.4 geht es sogar noch kürzer ohne das „Zwischenarray“:

echo array_values($array)[3];

Oder aber auch:

$keys = array_keys($array);
echo $array[$keys[3]];

PHP 5.4:

echo $array[array_keys($array)[3]];

Written by Michael Kliewe

Juli 13th, 2011 at 8:42 am

Posted in PHP

Tagged with , ,