Flash Media Server: как полностью защитить поток? - PullRequest
1 голос
/ 12 октября 2011

Я разрабатываю легкий механизм защиты на FMS.В настоящее время я могу аутентифицировать пользователя, используя SSO Token, предоставленный главным сервером.Однако для аутентификации SSO Token требуется WebService / RemoteObject другого сервера, что дорого и нереально для большого числа одновременно работающих пользователей.Поэтому я создал сеанс для каждого успешно подтвержденного пользователя, вернул идентификатор сеанса обратно пользователю, и пользователь может использовать это для дальнейших подключений.

В этом решении меня беспокоит атака на захват сеанса.Самозванец может использовать этот идентификатор сеанса, чтобы получить мой поток, если он успешно прослушал запрос моего клиента.Чтобы предотвратить это, у меня есть два решения: во-первых, каждый клиент создаст два соединения с сервером, один SSL для управляющего сообщения (например, функция NetConnection.call), одно для потоковой передачи данных.Другой создает защищенный канал RTMPE для получения потока.Оба требуют большей вычислительной мощности для реализации (на 15% больше для второго, не знаю, сколько стоит первое).

Есть ли лучшее решение для моей проблемы?

1 Ответ

1 голос
/ 24 января 2012

Невозможно предотвратить захват вашего токена сеанса без какого-либо взаимодействия между вашей FMS и сервером SSO.

Самое меньшее, что вы могли бы сделать, - это создать одноразовый токен, когда ваш клиент проходит через SSO.сохраните его, и когда игрок подключится к FMS, вы лишите законной силы этот токен.Вы можете использовать настройку redis + nginx для обработки этих токенов, заставить свой SSO хранить их там и написать плагин в FMS для их истечения вместо использования WebServices или RemoteObjects.

Счастливого кодирования!8)

...