Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:otp

Dies ist eine alte Version des Dokuments!


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';
$rangeIn30s = 2;
 
if( TokenAuth6238::verify( $base32Key, $_POST['token'], $rangeIn30s ) ) {
    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.

Aufgrund einer möglichen Zeitabweichung zwischen dem Client und dem Validierungsserver besteht die Möglichkeit beim Aufruf der Methode verify der PHP-Klasse PHPOTP (PHP One Time Password), als 3. Parameter eine Karenz-Zeit einzustellen. Standardmäßig, wenn der Parameter nicht gesetzt wird, werden 7 Token abgeglichen (3 in der Vergangenheit, der aktuelle und 3 in der Zukunft). 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.


...zurück zur Übersicht der 2-Faktor-Authentifizierung

php/otp.1737539321.txt.gz · Zuletzt geändert: 2025/01/22 10:48 von webproducer