你能在Flash 10中玩S3签名的网址FLV视频吗?

时间:2009-03-26 11:37:11

标签: flash amazon-s3 flv signature

我想将S3服务器中的FLV视频加载到我的Flash应用程序中。原始文件需要受到保护(即权限设置为仅供经过身份验证的用户读取),因此视频文件将使用签名网址进行调用...我已设法将非签名网址FLV加载并播放到Flash应用程序中。

1)潜水前我应该注意哪些问题?
2)我是否需要使用AS3 S3库来生成签名? 3)我可以在应用程序加载时(例如从PHP)生成1个签名并将其发送到Flash以与其加载的每个FLV文件一起使用吗?
4)图像和音频也将加载到Flash应用程序中,也需要加以保护。

由于 斯蒂芬

3 个答案:

答案 0 :(得分:0)

是的,您可以在Flash中播放已签名的网址没问题...

从阅读中我已经设法回答了几个我自己的问题 -

1)是的很多!
2)从Flash中签名URL不是一个好主意,因为密钥需要在SWF中或从PHP加载,因此这可能存在安全风险。最好在服务器上调用PHP方法来生成签名的URL并将文件返回到Flash /返回文件的路径(sendAndLoad?)。但这似乎是一个可以以某种方式绕过的额外步骤!
3)仍然不确定这一点,但我认为签名过程涉及使用文件的路径,因此每个网址的每个签名都是唯一的 - 这是正确的吗?

有人对此有进一步的建议吗? 斯蒂芬

答案 1 :(得分:0)

显然,我花了大量时间为我的网站尝试使用MP3文件。回答:

1) 没有太复杂的任务。 (尽管我的Gazillion hrs)

2) 不要在Flash中签名。使用托管PHP文件,您可以向其发出AJAX请求以获取签名URL。为此,ur S3存储桶的目录结构必须具有一致的模式,在给定一些输入的情况下,以编程方式确定文件位置。

我不知道这是一个可以被绕过的过程。 URL签名只能在服务器端完成,而不能在客户端完成。如果您想查看我的AJAX示例代码,请告诉我。我会把它贴在这里

3) 签名过程使用至少三个变量来创建签名 - 时间戳,文件位置(存储桶/文件夹/文件夹/文件),S3密钥。因此,每个文件请求都应有一个单独的签名。签名的URL应该具有非常有限的有效性(比如10秒)。能够在10秒内找到URL的用户应该能够下载该文件。

具有随时间戳而变化的签名可能会失败(主要是,如果不是完全)签名URL的全部目的。

要对网址进行签名,请使用以下脚本。它的功效就像魅力一样,如果按时完成,它可以节省很多时间。另请参阅下面的第5点以获得额外的安全性。

http://www.richardpeacock.com/blog/2010/07/amazon-aws-s3-query-string-authentication-php

4) 由于某种原因,FLASH播放器不播放MP3文件的签名S3 URL。我认为(GUESS)一旦读取了URL中的.mp3扩展名,他们就会忽略url的部分内容。因此,URL的查询字符串部分被播放器忽略,并且它无法读取该文件。然而,他们在我的S3 Bucker中播放可公开复制的文件。我一直在使用silverlight作为我的网站,并且绝对使用FLASH解决方案。如果这是保护FLV文件不会播放的原因。在这种情况下,您必须将整个文件代理到仅由URL创建的客户端。我试图避免的解决方案。

5) 为了进一步保护您的URL,使用链接中的一个或多个方法对它们进行模糊处理 下面。它们非常简单。

http://www.pc-help.org/obscure.htm

6) 此外,您的安全方法必须是在URL过期之前在浏览器上启动文件的回放。到期时间段必须足够短,以防止在到期前检测URL,并且必须足够长以提供开始播放的enuf延迟。这或多或少是使用自助过期URL的合理安全流的关键。

答案 2 :(得分:0)

回答您的具体要点

您需要注意的问题:我的第一个答案中的第4点;

需要Amazon S3库吗? :是的但不是真的,我的第一个答案中的第3点,链接中的脚本可以在不参考文档的情况下使用,但是你需要了解亚马逊的签名方法

只使用1个签名? :不推荐,击败使用签名的所有目的,可能没有,因为我认为签名强制使用文件路径和名称

音频&图像保护:所有保护都是合理的(假设您的最终用途没有时间或知识限制并且可以编写代码)。

图像:使用Javascript禁用右键单击,音频:可以通过一些修补程序下载流,您可以使其复杂化。

通过禁用JavaScript或从JS Scratchpad / Console中获取JS代码,可以下载图像。因此,即使检测JS是否已启用,也无法保护图像。