Подтвердить что ты не робот

Каковы возможные способы аутентификации пользователя при использовании соединения с веб-сайтами?

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

Кстати, я использую websocket tornado на стороне сервера для реализации основной комнаты чата и уже выполняю аутентификацию для части, не являющейся веб-частью моего приложения.

ps: предположим, что аутентифицированные сообщения пользователей, что он хочет, и когда другой пользователь открывает страницу с листингом, и автоматически добавляет другой пользователь в список слушателей в Интернете, что я хочу, чтобы каждый пользователь мог общаться с покупателем предмета индивидуально, не в чат, но с чаем в чате

4b9b3361

Ответ 1

Прежде всего, вы должны помнить две вещи о WebSockets: (a) это развивающийся стандарт и (б) он разработан с намерением работать с ненадежными клиентами.

Самая большая и самая важная вещь, которую вы должны всегда делать с WebSockets, - проверить их происхождение. Если происхождение несовместимо, очевидно, что вы не хотите иметь дело с этим клиентом, поэтому игнорируйте их запросы. Кроме того, убедитесь, что вы используете защищенный WebSocket протокол wss, а не защищенный протокол ws. Это гарантирует, что ваши сообщения будут зашифрованы.

Проблема только в том, что эта информация может быть подделана. См. это сообщение в блоге для быстрого демонстрации этого.

Дополнительная безопасность:

  • Попробуйте отправить соленого токена, сделав его соленой/хешированной и отосланной и подтвержденной в фазе подтверждения.
  • Предельные запросы, которые происходят слишком часто (точно так же, как протокол IRC). Если пользователь отправил 10 строк и более в течение секунды, проигнорируйте этого пользователя.
  • Сделайте быструю проверку спама (есть много алгоритмов для этого) - придерживайтесь световых эвристик, иначе это будет обременять ваш сервер. Такие вещи, как наличие слов "свободный" или "виагра". Дайте пользователю оценку, которая представляет вероятность того, что они являются спамом или являются ботом. Когда это будет нарушено, загрузите их с серверов.

Надеюсь, что это поможет! Извините, если нет. Это мой ответ frist на StackOverflow.: P

Ответ 2

Я уверен, что соединение с веб-сервером отправляет любые файлы cookie, которые были установлены в не-веб-подключении к вашему приложению. Вы должны иметь возможность запрашивать хранилище сеансов Django для файла cookie подключения и определять пользователя, к которому принадлежит этот сокет.

Отъезд: https://docs.djangoproject.com/en/1.3/topics/http/sessions/#configuring-the-session-engine

Ответ 3

Это целая цель подключения к сети. Вы проверяете подлинность их путем подтверждения связи. Для получения дополнительной информации см. Здесь: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08