jQuery: creare e validare un token di sessione per il session storage con PHP

Con jQuery e PHP possiamo creare e validare un token di sessione per il session storage.

Definiamo il seguente codice PHP:


header('Content-Type: application/json');

$token = md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']);
echo json_encode(['token' => $token]);
exit;

Quindi in jQuery avremo:


var setSessionToken = function() {
    if( sessionStorage.getItem( "token" ) === null ) {
        $.when( $.ajax( { url: "/ajax/token", dataType: "json" } ) ).done(function( response ) {
            sessionStorage.setItem( token, response.token );
        });
    }
};

$(function() {
    setSessionToken();
});

La stessa procedura può essere applicata per verificare la validità di un token:


header('Content-Type: application/json');

$sent_token = $_POST['token'];
$token = md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']);
$valid = false;

if($sent_token == $token) {
    $valid = true;
}
echo json_encode(['valid' => $valid]);
exit;

Quindi in jQuery avremo:


var verifySessionToken = function() {
    if( sessionStorage.getItem( "token" ) === null ) {
        $.post( "/ajax/token", { token: sessionStorage.getItem( "token" ) }, function( response ) {
            if( !response.valid ) {
                //...
            }
        });
    }
};

$(function() {
    verifySessionToken();
});

Si tratta di un metodo lato client per verificare l'integrità di una sessione.