Безопасно ли посылать идентификатор сессии с запросом 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
?>