2013-12-11 2 views
0

Я запускаю Socket.IO с node.js за nginx и только прокси-сервер через необходимый домен. Его сайт PHP и вся безопасность на сайте выполнены с помощью PHP.Socket.IO HTTP - Как защитить конфигурацию

Для пользователей Socket.io аутентификации, передавая их UserID, как показано ниже:

iosocket.on('connect', function() { 
    iosocket.emit('userid', '1000015349'); 

Это отлично работает, но мне интересно узнать, есть ли другие меры я могу impliment для дальнейшего крепят эту конфигурацию.

Примечание: я не использую SSL, потому что я слышал, что смешивание HTTP-сайта с веб-сайтами HTTPS - не лучший способ пойти и вызовет проблемы в некоторых браузерах, таких как firefox.

Могут ли куки, токены и т. Д. Помочь? Я мог бы разместить уникальный токен в браузере DOM после входа, который можно использовать для аутентификации соединения или файла cookie, если это лучше.

thx

+0

Если ваша безопасность сайта зависит от сеансов php, вы можете использовать эти данные php-сессии в вашем приложении node.js. В некотором роде (не знаю, как и где вы храните сеансы). – birukaze

+0

Я храню данные сеанса php в memcached ... действительно ли возможно выполнить идентификацию node.js/socket.io из этих php-сессий? ты это сделал раньше? – Adam

ответ

1

Почему бы нет, данные - данные. Вам нужно только его декодировать и связать идентификатор сеанса со строковыми ключами php для хранения данных сеанса. Я бы выполнил (SessionHandler) и назначил собственный обработчик сеанса в точке ввода php. В public bool write (string $session_id , string $session_data) я бы связал SID с параметром $ session_id (обратите внимание, что SID! = $ Session_id param, используя файлы как обработчик сохранения, dunno, что с memcache или redis или другим обработчиком сохранения кеша). В точке ввода node.js я бы прочитал файлы cookie, чтобы узнать SID, получить кодированную строку данных сеанса из хранилища сеансов, декодировать ее (искать здесь в stackoverflow - есть некоторая реализация javascript кодов кодировки данных php), и использовать в моем приложении node.js.

Собственно, так я делаю это в одном из моих проектов.

Смежные вопросы