使用rtmp请求发送会话ID是否安全?

时间:2014-06-03 20:47:11

标签: php rtmp

我需要知道用户是否已登录,以及他们在请求rtmp流时是谁。

rtmp服务器将在用户连接时连接到php回调页面,并且仅在2xx响应时授权流。

我想到了这个:

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

我使用https但rtmp并未通过安全连接,因此看起来很危险。

也许有更好的方法?

1 个答案:

答案 0 :(得分:1)

发送session_id的加密。在回调发生时,在PHP端解密它。

为了使其更安全,每次加密的密钥都不同。例如,是否存在静态部分和动态部分(例如user_name)。并在flashvars中提供动态部分(例如user_id)的线索。

示例:

发送参数:

<?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
?>