我需要知道用户是否已登录,以及他们在请求rtmp流时是谁。
rtmp服务器将在用户连接时连接到php回调页面,并且仅在2xx响应时授权流。
我想到了这个:
<param name="flashvars"
value="src=rtmp://serverip/stream?sid=<?php echo $session_id; ?>" />
我使用https但rtmp并未通过安全连接,因此看起来很危险。
也许有更好的方法?
答案 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
?>