NodeJs расшифровывает laravel5.6 идентификатор сессии из куки - PullRequest
0 голосов
/ 15 октября 2018

Так, как диктует заголовок, я пытаюсь расшифровать идентификатор сеанса приложения laravel, используя usgin nodeJs.но я получаю эту ошибку, когда пытаюсь десериализовать данные:

SyntaxError: Unknown / Unhandled Тип (ы) данных: при ошибке (C: \ V12Projects \ craiglist \ node_modules \ php-unserialize \php-unserialize.js: 54: 13)

Мой основной код следующий:

let session = cookie.parse(req.headers.cookie).laravel_session;
let sessionKey = getSessionKey(session, process.env.APP_KEY);

Моя вспомогательная функция 'getSessionKey' выглядит следующим образом:

getSessionKey = function(laravelSession, laravelKey, keyLength) {
       keyLength = keyLength || 32;
       let cypher = 'aes-' + keyLength * 8 + '-cbc'; // + '-cbc'

       //Get session object
       laravelSession = new Buffer(laravelSession, 'base64');
       laravelSession = laravelSession.toString();
       laravelSession = JSON.parse(laravelSession);

       //Create key buffer
       laravelKey = new Buffer(laravelKey, 'base64');

       //crypto required iv in binary or buffer
       laravelSession.iv = new Buffer(laravelSession.iv, 'base64');
       laravelSession.value = new Buffer(laravelSession.value, 'base64')

       //create decoder
       let decipher = crypto.createDecipheriv(cypher, laravelKey, laravelSession.iv);

       decipher.setAutoPadding(false);
       //let decoded = decoder.update(laravelSession.value, 'base64');
       let decoded = Buffer.concat([decipher.update(laravelSession.value), decipher.final()], 'base64');

       //the error happens in the line below
       let sessionId = PHPUnserialize.unserialize(decoded.toString('ascii'));

       return sessionId;
}
...