Совместное использование данных между php и node.js с помощью файла cookie

У меня есть сайт PHP, а для обновлений в реальном времени и чата я установил Node.js и работает нормально.

Оба PHP и Node.js имеют доступ к одной и той же базе данных MySQL.

Но проблема в том, чтобы проверить личность пользователя, который уже зарегистрировался на PHP-сайте.

Я не хочу говорить с PHP-приложением любыми способами, REST или нет. Поскольку для меня это будет преследовать ту же цель использования Node.js, как и каждый запрос Node.js, будет сделан новый запрос страницы PHP.

Я хочу, это метод шифрования и дешифрования, который понимается как PHP, так и Node.js

Итак, я могу установить cookie с зашифрованным значением для запроса Node.js, который будет находиться в субдомене updates.mydomain.com. Читая файл cookie, Node.js может расшифровать его значение и проверить идентификатор пользователя.

Итак, мой вопрос: существует ли какой-либо шифр и соответствующий метод расшифровки, который поддерживается как с PHP, так и с Node.js, используя тот же ключ шифрования?

Обновление

На самом деле я не собираюсь расшифровывать его на стороне клиента: D, тогда вся точка дешифрования бессмысленна. Что я хочу сделать -

1) PHP для генерации зашифрованной информации пользователя cookie и использования этого файла cookie для определенного домена, например update.mydomain.com

2) Затем Node.js получит файл cookie для каждого последующего запроса и расшифрует данные на стороне сервера, используя тот же ключ шифрования.

Как я могу видеть, поэтому я хотел знать, если существует общая система шифрования/дешифрования между PHP и Node.js, так что зашифрованные данные могут быть дешифрованы другим и наоборот.

Таким образом, я могу безопасно переносить текущую идентификацию пользователей с PHP на Node.js, и мне не нужно беспокоиться об управлении сеансом других типов:)

Короче говоря, Encrypt by PHP → Decrypt by Node.js → возвращает те же данные. Возможно ли это?

Спасибо,
Anjan

Ответ 1

Лучший подход здесь (imho) - хранить информацию о сеансе в базе данных, а затем убедиться, что Node может прочитать cookie сеанса, установленный приложение PHP.

Затем он может просто проверить cookie сеанса на базе базы данных, чтобы убедиться, что пользователь вошел в систему.

Пример шифрования

Если вы действительно хотите использовать шифрование, имейте в виду, что это, вероятно, будет менее безопасным и займет больше времени, чем просто смена PHP-сервера, но вот пример, который, вероятно, может работать:

В PHP зашифруйте данные:

<?php
$encryption_key = 'somethingverysecretandpreferrablylong';
$vector = 'anotherlongwindedstring';
mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $encryption_key, 'My secret message', MCRYPT_MODE_CBC, $vector);
?>

И расшифровать в Node.js;

var crypto = require('crypto');
var decipher = crypto.createDecipher('aes-256-cbc','InmbuvP6Z8');
decipher.update(crypted_string_from_cookie,'hex','utf8');
decipher.final('utf8');

И, пожалуйста, будьте осторожны с этим кодом. Я отнюдь не эксперт по безопасности, поэтому, если вы хотите зашифровать что-нибудь чувствительное, вы должны получить экспертную оценку от кого-то, кто:)