© saicle/Shutterstock.com
Die zehn größten Sicherheitslücken im Web

Die Spitze des Eisbergs


Im dritten und letzten Artikel der Reihe widmen wir uns dem sicheren Hashing von Passwörtern und der Frage, wieso das neue Passwort-API von PHP 5.5 solch ein großer Schritt nach vorne ist. Zudem geht es um das Access-Level-Control, dem großen Thema der Cross-Site Request Forgeries und dem Einsatz von Drittanbietersoftware.

Dass Passwörter entsprechend gut gewählt werden sollten, um nicht einfach durch eine Dictionary-Attacke geknackt zu werden, hatten wir ja bereits im ersten Artikel dieser dreiteiligen Serie beschrieben. Essenziell wichtig ist aber auch die korrekte Verschlüsselung der Passwörter, die zwangsläufig irgendwo gespeichert werden müssen, um die User später nach einem Loginversuch zu authentifizieren.

Artikelserie

Teil 1: Die zehn größten Sicherheitslücken im Web – Teil 1: OWASP Top 10, Platz 1–2

Teil 2: Die zehn größten Sicherheitslücken im Web – Teil 2: OWASP Top 10, Platz 3–6

Teil 3: Die zehn größten Sicherheitslücken im Web – Teil 3: OWASP Top 10, Platz 7–10

Passwort-API

Glücklicherweise haben wir seit PHP 5.5 ein neues Passwort-API, das „from scratch“ sehr sichere Hashes zu unseren Passwörtern generiert, aber was war das Problem mit unseren alten Funktionen?

Zunächst einmal muss ein sicherer Algorithmus gefunden werden, und md5 zählt sicherlich nicht dazu, denn jeder mögliche zu generierende md5-Hash wurde inzwischen gebrute-forced und die Hash-Tabellen sind so bekannt, dass diese sogar mit Google gefunden werden. Ähnliche Hash-Tabellen gibt es auch für etwas komplexere Algorithmen und wird es auch immer mehr geben, da aufgrund der ganzen Cloud-Farmen oder auch immer größer werdenden Botnetze für relativ wenig Geld sehr große Rechenleistungen zur Verfügung stehen.

Auch entsprechende wilde Konstrukte von md5, die dann nochmal mit base64 enkodiert werden (das übrigens kein Hash- oder Verschlüsselungsalgorithmus ist und deswegen hier gar nichts zu suchen hat) helfen nicht und machen das Knacken der Passwörter ggf. sogar einfacher, da die Anzahl der Hash-Konflikte erhöht wird, wenn z. B. md5 mehrfach oder sogar auf einen verkürzten String angewendet wird.

Aber die Nutzung eines guten Algorithmus allein ist nicht ausreichend, denn die zu generierenden Hashes müssen einen zufälligen Salt erhalten, der eben genau die Benutzung von Standard-Hash-Tabellen unmöglich macht. So wird zu jedem zu hashenden String ein neuer Salt generiert, der an den String angehängt wird und somit bei jeder Validierung dort vorkommen muss. Um nun also mit solch eine...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang