PHP/MySQL: Mehr Sicherheit und erhöhte Performance durch MySQLi und Prepared Statements

In der aktuellen Ausgabe der Zeitschrift Hakin9 ist ein Artikel von mir mit dem Thema PHP/MySQL: Mehr Sicherheit und erhöhte Performance durch MySQLi und Prepared Statements erschienen. Der Artikel richtet sich explizit an Einsteiger. Wer sich dafür interessiert kann ja mal reinschauen, der Artikel ist als PDF verfügbar.

Zahlreiche Webanwendungen basieren auf der sehr beliebten Scriptsprache PHP, welche sich besonders entwicklerfreundlich mit MySQL kombinieren lässt. Diese populäre Kombination sorgt aber auch dafür, dass Sicherheitslücken diesbezüglich verstärkt ausgenutzt werden. Allen voran seien hier MySQL-Injections genannt.

Zum Dokument: PHP/MySQL: Mehr Sicherheit und erhöhte Performance durch MySQLi und Prepared Statements (PDF)

Die Cracklib Bibliothek

Mit der Cracklib Bibliothek kann man die Stärke (Sicherheit) von Passwörtern testen. Cracklib führt bei der Überprüfung eine Wörterbuch Attacke auf das Passwort aus und prüft die Verteilung der Zeichen bzw. die Länge der Zeichenkette, auch wird die Groß- und Kleinschreibung überprüft und verglichen.

Als Rückgabe erhält man dann verschiedene (englische) Satzteile, wie z.B.: „it is too short“ oder „strong password“. Um diese Funktionen nutzen zu können muss PHP mit der Option –with-crack=/pfad/zu/cracklib kompiliert worden sein. Ausserdem müssen sie aus einer Wörterliste eine binäre Wörterbuchdatei erstellen, dazu liefert cracklib aber schon eine fertige Funktion mit, die sie nur noch über die Kommandozeile ausführen müssen!

Hier mal ein Beispiel für die Anwendung in PHP:

<?php
 // Laden des Wörterbuches
 $dictionary = crack_opendict("/pfad/zur/cracklibdict/cracklib_dict");
 // Prüfen des Passwortes ($password)
 $check = crack_check($dictionary, $password);
 // Rückgabe holen
 $diag = crack_getlastmessage();
 // Rückgabe ausgeben
 echo $diag;
 // Wörterbuch wieder schliessen
 crack_closedict($dictionary);
 ?>

Mögliche Rückgabewerte von crack_getlastmessage() bei Verwendung der cracklib 2.7 sind:

  • it is based on a dictionary word
  • it is based on a (reversed) dictionary word
  • it’s WAY too short
  • it is too short
  • it does not contain enough DIFFERENT characters
  • it is all whitespace
  • it is too simplistic/systematic
  • it looks like a National Insurance number

Es ist also ganz einfach, die Funktionen der cracklib in seine eigene Anwendung einzubinden. Sie sollte überall dort verwandt werden, wo der Benutzer sein Passwort selbst festlegen kann und sie ihn bei der Passwortwahl unterstützen möchten.

Backup mehrerer MySQL DBs in ein ZIP Archiv auf all-inkl.com Servern

Da ich alle Webseiten bei all-inkl.com hoste und täglich ein MySQL Backup erzeuge, dies aber natürlich nicht manuell machen will, habe ich mir mal ein Script geschrieben welches alle Datenbanken für mich sichert und in ein großes ZIP-Archiv packt. Das ganze Script kann man dann täglich via Cronjob laufen lassen und das ZIP-Archiv versenden oder auf anderen Servern speichern oder ähnliches. Mehr lesen

Die aktuell gefragtesten Programmiersprachen (TIOBE, September 2009)

Tiobe hat wie üblich im letzten Monat das aktuelle Ranking über diverse Programmiersprachen veröffentlicht.

„The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, Wikipedia and YouTube are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.“

Es werden also diverse Daten aggregiert und dann aufbereitet, um daraus einen Index zu erstellen. Mit Java und C ist man wie immer sehr gut aufgestellt. Mehr Daten gibt es auf der Tiobe Webseite.

index

tpci_trends