Sven Rautenberg: Kann mir jemand bei der Portierung PHP->JS helfen?

Beitrag lesen

Moin!

dann reicht ein einfacher md5 hash von $code der dann übertragen wird auch.
alternativ statt md5 einfach sha-1 verwenden, ist noch ein bisschen sicherer.

security through obscurity ist nie eine gute idee...

es ist auch kein security through obscurity, weil der code offen ist (siehe http://nonchip.homeip.net/timecode.php).
es ist eine methode, um $code so zu verschlüsseln, dass er nur maximal eine minute lang von der check-funktion getestet werden kann, und rainbowtables unmöglich werden, bzw aufwändiger als bruteforcen werden (weil man pro minute mindestens eine rainbowtable bräuchte).

Das ist eine unsinnige Argumentation.

Dein Code verwirbelt den Code ganz heftig mit der aktuellen Uhrzeit (die bekannt ist), und am Ende wird als Prüfungs-Indikator die benutzte Sekundenzahl mit an den Hashwert drangehängt. Dein Server kriegt also nur Hash plus Sekunden.

Ein Angreifer kann dem Code entnehmen, wie er einen Code plus eine anzunehmende Uhrzeit, die in der Zukunft liegt, durch deine Hashfunktion schicken muss, um am Ende einen gültigen Hash-Code zur korrekten Uhrzeit an deinen Server zu schicken. Dein ganzes Hash-Gewirbel ist also vollkommen irrelevant, weil es mit vorhersehbaren bzw. festsetzbaren Informationen arbeitet und transparent Dinge tut.

Der einzige wirksame Schutz gegen Rainbowtables ist, dem eventuell zu kurzen "Passwort" oder was auch immer einen recht kräftigen Salz-Wert hinzuzufügen. Der macht aus dem kurzen Passwort "123456", was mit Sicherheit in einer MD5-Rainbowtable steht, einen Wert wie "ghjklsdhjkzweurizhuil123456", dessen MD5-Wert nicht in der Rainbowtable steht. Alternativ "123456ghjklsdhjkzweurizhuil". Gute Salzwerte ändern sich pro Hash-Festlegung auch noch, d.h. jedes Passwort ist mit einem anderen Salz-Wert gewürzt - dazu muss man allerdings den Salz-Wert auch noch separat übermitteln.

- Sven Rautenberg