【转载】Red5 0.6 安全

2024-01-23 09:18
文章标签 安全 转载 red5 0.6

本文主要是介绍【转载】Red5 0.6 安全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ma_yan368/archive/2008/08/01/2753383.aspx

 

序言
==========================
此文档描述Red5 API,介绍在0.6版中对流和/或共享对象的访问保护。类似`Client.readAccess`和`Client.writeAccess`在 Macromedia Flash Communication Server / Flash Media Server 2中所提供的作用。


==========================
在Red5中,读(重放)和写(发布/录制)访问到流是被分开保护的。

流重放安全
--------------------------
希望限制每个用户流的重放或者只希望提供给定名称的流的访问,可以用到IStreamPlaybackSecurity接口。

它可以被一些对象实现,并在ApplicationAdapter注册。流安全handler的一个专有数字被每个程序所支持。只要有一个handler 拒绝访问,客户端就会收到一个错误`NetStream.Failed`,它包含一个`descr iption`字段提供通讯错误信息。

一个handler例子,只允许访问以`liveStream`开始的流,描述如下:

  import org.red5.server.api.IScope;
  import org.red5.server.api.stream.IStreamPlaybackSecurity;
 
  public class NamePlaybackSecurity implements IStreamPlaybackSecurity {
 
    public boolean isPlaybackAllowed(IScope scope, String name, int start,
      int length, boolean flushPlaylist) {
        if (!name.startswith("liveStream")) {
            return false;
        } else {
            return true;
        }
    };
   
  }

注册这个handler到程序中,加入以下代码到`appStart`方法中:

  registerStreamPlaybackSecurity(new NamePlaybackSecurity());

Red5包含了一个拒绝任何流访问的handler(DenyAllStreamAccess)


流发布安全
--------------------------
在大部分程序中,允许用户发布和/或录制流,此访问必须被限制以防止此服务被滥用。
因此,Red5提供IStreamPublishSecurity接口来拒绝某些流的发布。

类似IStreamPlaybackSecurity,它可以被一些对象实现,并在ApplicationAdapter中注册。只要一个已注册的 handler拒绝访问,客户端就会收到一个错误`NetStream.Failed`,它包含一个`desc ription`字段提供通讯错误信息。

一个handler例子,只允许被鉴别的连接发布以`liveStream`开始的实时流,并拒绝其它所有的访问。描述如下:

  import org.red5.server.api.IConnection;
  import org.red5.server.api.IScope;
  import org.red5.server.api.Red5;
  import org.red5.server.api.stream.IStreamPublishSecurity;
 
  public class AuthNamePublishSecurity implements IStreamPublishSecurity {
 
    public isPublishAllowed(IScope scope, String name, String mode) {
        if (!"live".equals(mode)) {
            // 不是一个实时流
            return false;
        }
   
        IConnection conn = Red5.getConnectionLocal();
        if (!"authenticated".equals(conn.getAttribute("UserType"))) {
            // 用户没有被鉴别
            return false;
        }
       
        if (!name.startswith("liveStream")) {
            return false;
        } else {
            return true;
        }
    };
   
  }

注册这个handler到程序中,加入以下代码到`appStart`方法中:

  registerStreamPublishSecurity(new AuthNamePublishSecurity());

当然,你也可以在一个`*Connect`或`*Join`方法中加入代码来设置`UserType`属性,以使用户获得鉴别,从而能够允许发布流。

Red5包含了一个拒绝任何流访问的handler(DenyAllStreamAccess)

 


共享对象
==========================
一旦程序变得复杂,你可能希望控制存储在共享对象中的数据,因此不允许客户端直接修改共享对象,只能通过程序的方法来暴露。

ISharedObjectSecurity接口可以用于写handler,在给定的共享对象上拒绝某些动作,防止客户端任意的创建共享对象。

下面的例子只允许持久化共享对象`Chat`的创建。任何客户端都可以连接到它,只允许通过共享对象发送`saySomething`信息。所有到属性的写访问都被拒绝。你可以通过服务端改变属性,但是这些改变都是不被安全handler所保护的。

  import java.util.List;
  import org.red5.server.api.IScope;
  import org.red5.server.api.so.ISharedObject;
  import org.red5.server.api.so.ISharedObjectSecurity;
 
  public class SampleSOSecurityHandler implements ISharedObjectSecurity {
   
    public boolean isConnectionAllowed(ISharedObject so) {
        // note: we don't check for the name here as only one SO can be
        //       created with this handler.
        return true;
    }
   
    public boolean isCreationAllowed(IScope scope, String name,
      boolean persistent) {
        if (!"Chat".equals(name) || !persistent) {
            return false;
        } else {
            return true;
        }
    }
   
    public boolean isDeleteAllowed(ISharedObject so, String key) {
        return false;
    }
   
    public boolean isSendAllowed(ISharedObject so, String message,
      List arguments) {
        if (!"saySomething".equals(message)) {
            return false;
        } else {
            return true;
        }
    }
   
    public boolean isWriteAllowed(ISharedObject so, String key,
      Object value) {
        return false;
    }
   
  }

注册这个handler到程序中,加入以下代码到`appStart`方法中:

  registerSharedObjectSecurity(new SampleSOSecurityHandler());

如果你希望注册一个安全handler只为一个给定的共享对象,代码如下:
 
  ISharedObject so = getSharedObject(scope, "MySharedObject");
  so.registerSharedObjectSecurity(new MySOSecurityHandler());


Red5 API
org.red5.server.api.stream.IStreamPlaybackSecurity
org.red5.server.adapter.ApplicationAdapter
org.red5.server.api.stream.support.DenyAllStreamAccess
org.red5.server.api.stream.IStreamPublishSecurity
org.red5.server.api.so.ISharedObjectSecurity

这篇关于【转载】Red5 0.6 安全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/635927

相关文章

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

red5-server源码

red5-server源码:https://github.com/Red5/red5-server

企业安全之WiFi篇

很多的公司都没有安全团队,只有运维来负责整个公司的安全,从而安全问题也大打折扣。我最近一直在给各个公司做安全检测,就把自己的心得写下来,有什么不足之处还望补充。 0×01  无线安全 很多的公司都有不怎么注重公司的无线电安全,有钱的公司买设备,没钱的公司搞人力。但是人的技术在好,没有设备的辅助,人力在牛逼也没有个卵用。一个好的路由器、交换机、IDS就像你装备了 无尽、狂徒、杀人书一

Linux 安全弹出外接磁盘

命令行操作 首先,需要卸载硬盘上的所有分区,可以使用umount来卸载分区 清空系统缓存,将所有的数据写入磁盘 sync 列出已挂载的文件系统 使用lsblk或者df命令来查找要卸载的分区 lsblk or df -h 确保没有文件正在使用 使用lsof 命令来检查 sudo lsof |grep /dev/sdc 卸载分区 假设硬盘的分区是 /dev/sdc1,使用u

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

【小迪安全笔记 V2022 】信息打点9~11

第9天 信息打点-CDN绕过篇&漏洞回链8接口探针&全网扫指&反向件 知识点: 0、CDN知识-工作原理及阻碍 1、CDN配置-域名&区域&类型 2、CDN绕过-靠谱十余种技战法 3、CDN绑定-HOSTS绑定指向访问 CDN 是构建在数据网络上的一种分布式的内容分发网。 CDN的作用是采用流媒体服务器集群技术,克服单机系统输出带宽及并发能力不足的缺点,可极大提升系统支持的并发流数目,减少或避