发送会话Id和rtmp请求是否安全?


Is it safe to send session Id with rtmp request?

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

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

我想到了这个:

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

我正在使用https,但是rtmp不是通过安全连接,所以看起来很危险。

也许有更好的方法?

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