Можно ли добавить заголовки HTTP для рукопожатия Socket.io? - PullRequest
4 голосов
/ 03 июля 2011

Я пытаюсь защитить канал между моим клиентом socket.io и стороной node.js. Основное веб-приложение находится в Drupal, поэтому я не могу передать куки в node.js, если node.js находится на другом хосте. Я хотел бы добавить несколько пользовательских заголовков к его HTTP-рукопожатию Socket.io (например, сеанс PHP). Вы знаете, возможно ли это? Использование Socket.io 0.7

1 Ответ

2 голосов
/ 03 июля 2011

П.С .: Я просто немного подумаю. Мне нравится эта проблема, и я собираюсь подумать об этом немного больше. Я только думал об этом только из того же домена node.js ...

выпуск Github

Я не знаю (так не думаю), возможно ли добавить заголовки. P.S .: Я думаю, что вы также должны попытаться заполнить вопрос на https://github.com/LearnBoost/socket.io/issues. Хорошая вещь о github заключается в том, что автор получит электронное письмо, когда кто-то опубликует проблему. Кроме того, люди в learnboost - действительно хорошие люди, которые любят помогать вам.

Proxy

Прокси-запрос всех ваших запросов, так что запрос поступил из того же домена.

Refererer

Реферер передается, поэтому вы можете передавать информацию из него. Это также может быть подделано, так что вам лучше создать что-то, что вы можете проверить (только один раз) из Drupal. Я думаю, это было бы довольно легко реализовать ...

разрешить передачу сообщений только после проверки.

Я знаю, что вы можете сделать это отсоединить розетки через socket.disconnect(). Откройте соединение и получите идентификатор socket.io, но принимайте сообщения только после подтверждения личности. Я бы сделал доступным маршрут через экспресс, который Drupal может свернуть с идентификатором post socket.io (сохранить маршрут закрытым). Поскольку вы находитесь в домене Drupal, вы можете получить доступ к информации о сеансе Drupal.

// v0.7.x
var sid = socket.id;

Чтобы сделать это безопасным, единственный вариант - использовать SSL (это единственный способ, которым вы в любом случае можете обезопасить любой канал связи). Если вы доверяете SSL обоих доменов, вероятно, на самом деле не нужно. Затем, если разрешен идентификатор socket.io, вы разрешите передачу сообщений, в противном случае я просто отключу соединение.

PusherApp

Другим вариантом будет внедрение / клонирование аутентификации pusherapp => http://pusher.com/docs/client_api_guide/client_channels#subscribe-private-channels

authentication

P.S. Я постараюсь загрузить пример позже, но сейчас мне пора спать. Надеюсь, это имело какой-то смысл:) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...