Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:otp

Validierung des vom User eingegeben Token (2FA)

In diesem Beispiel wird vorausgesetzt, dass der vom User eingegebene Token aus einem HTML-Eingabeformular via Post an diese Seite gesendet wurde.

include( 'oauth2/rfc6238.php');
 
$base32Key = 'JV4VGZLDOJSXIUDBONZXO33SMQ';
 
if( TokenAuth6238::verify( $base32Key, $_POST['token'] ) )
{
    echo "Code is valid";
}
else
{
    echo "Invalid code";
}

Wird, wie in diesem Fall, für die Authentifizierung der Type „totp“ verwendet werden die Token der Grundlage des Keys und der aktuellen Uhrzeit generiert.

Die PHP-Klasse PHPOTP (PHP One Time Password) erstellt bei der Validierung des vom User eingegebenen Token sieben Tokens zum Vergleich. Beispiel:

Token Zeit-Differenz
643829 aktuelle Zeit - 90 Sekunden
390536 aktuelle Zeit - 60 Sekunden
436341 aktuelle Zeit - 30 Sekunden
887919 aktuelle Zeit
774486 aktuelle Zeit + 30 Sekunden
380981 aktuelle Zeit + 60 Sekunden
473181 aktuelle Zeit + 90 Sekunden

Somit ist ein Token für 3 Minuten gültig (1,5 Minuten vor der Zeit und 1,5 Minuten nach der Zeit). Mit dieser Taktik können Zeitdifferenzen zwischen Smartphone und Server bis zu 3 Minuten kompensiert werden.

php/otp.txt · Zuletzt geändert: 2017/10/15 00:00 (Externe Bearbeitung)