FLV链路安全,无需客户端混淆


FLV Link Security Without Client Obfuscation

假设:

  1. 缺乏混淆
  2. 哈希视频链接

有没有一种方法可以在用户不确定流式视频的直接链接(通过页面源或其他方式)的情况下安全地呈现Flash视频播放器(SWF)?假设Flash视频播放器是非专有的,并且可以完全更改。如果没有主权财富基金的混淆,是否有足够的安全性?

我看到3种可能的解决方案

Wowza

我试过了,我认为这是迄今为止最好的流媒体解决方案。它比Adobe Flash Media Streaming更便宜http://www.adobe.com/products/flash-media-streaming.html并且其架构更易于扩展。但这与您现有的CDN解决方案不兼容。Wowza提供了一个基于令牌的安全插件,可以防止flash客户端在未被允许的情况下流式传输视频:http://www.wowza.com/forums/content.php?51而且这是一个真正的流媒体环境,所以你不会担心用户窥探他们的浏览器连接并下载内容。虽然它不是完全防弹的,但它非常安全,因为您将使用流媒体协议,如rtsp://

Lighttpd+mod_secd下载

它也是基于令牌的,需要您在Lighttpd网络服务器后面托管视频。http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModSecDownload它将使视频链接在一定时间后过期,这将使热链接并非不可能,而是更难维护,因为它要求"热链接者"在每次过期时更改链接。根据视频的长度,它可能在5分钟后过期,这是非常安全的。

CDN令牌身份验证

我一直在使用EdgeCast作为图像和视频的CDN,它们提供与Lighttpd+mod_secdownload相同类型的保护。它被称为"基于令牌的身份验证",可能在其他CDN服务中也可用。使用EdgeCast API,我可以请求特定URL的令牌,并带有过期时间。正如我在mod_secdownload中所做的那样。在5分钟的过期时间内,热链接将变得毫无用处。

所以

如果可以的话,使用流媒体服务器是防止内容下载和热链接的最佳方式。任何在浏览器中混淆URL的尝试最终都会失败,因为嗅探浏览器连接并重复相同的协议太容易了。出于同样的原因,Flash客户端中的任何混淆都不会起作用,因为浏览器会显示可下载的URL。