Archive for the ‘PHP’ Category
Schöner hashen mit bcrypt
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.
- Ich predige nicht (Ausnahme: „Es heißt Standard, verdammt, nicht Standart!“).
- Ach, wenn die Welt schon mal auf dem Stand des einfachen md5 wäre …
- 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
Linkpool Nummer 18
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
2. Phase des Ticketverkaufs der PHP Unconference 2011 in Hamburg
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 😉
Slides der International PHP Conference 2011 Spring Edition
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
Per Index auf einen assoziativen Array zugreifen
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]];