Совместное использование данных между 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');
И, пожалуйста, будьте осторожны с этим кодом. Я отнюдь не эксперт по безопасности, поэтому, если вы хотите зашифровать что-нибудь чувствительное, вы должны получить экспертную оценку от кого-то, кто:)
Ответ 2
Другим подходом было бы использовать node.js как хранилище сеансов PHP. У Гонсало Аюзо есть интересная статья:
http://gonzalo123.wordpress.com/2011/07/25/using-node-js-to-store-php-sessions/