Безопасно ли посылать идентификатор сессии с запросом rtmp?

Мне нужно знать, если пользователь вошел в систему, и кто они, когда они запрашивают поток RTMP.

Сервер rtmp подключится к странице обратного вызова php при подключении пользователя и авторизует поток только в ответе 2xx.

Я думал об этом:

<param name="flashvars" 
     value="src=rtmp://serverip/stream?sid=<?php echo $session_id; ?>" /> 

Я использую https, но RTMP не через безопасное соединение, так что это кажется опасным.

Возможно, есть лучший метод?

1 ответ

Решение

Вместо этого отправьте шифрование session_id. И расшифровывать его, когда происходит обратный вызов, на стороне PHP.

Чтобы сделать его более безопасным, каждый раз ключ к вашему шифрованию должен быть разным. Например, он имеет статическую часть и динамическую часть (например, имя_пользователя). И дать подсказку динамической части (например, user_id) во flashvars.

Пример:

отправив параметр:

<?php
    $static_key_part = "blahblah";
    $encrypted = openssl_encrypt($session_id, "aes128", $static_key_part.$user_name);
?>
<param name="flashvars" 
    value="src=rtmp://serverip/stream?sid=<?php echo urlencode($encrypted); ?>&user_id=<?php echo $user_id; ?>" />

обработка обратного вызова:

<?php
    $static_key_part = "blahblah";
    $encrypted = $_GET['encrypted'];
    $user_id = $_GET['user_id'];
    $user_name = get_it_from_database($user_id);
    $session_id = openssl_decrypt($encrypted, "aes128", $static_key_part.$user_name);
    session_id($session_id);
    session_start();
    // check session here
?>
Другие вопросы по тегам