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