显然,我已经花费了无数个小时为我的网站尝试使用 MP3 文件。回答:
1)不要太复杂的任务。(尽管我的 Gazillion 小时)
2) 不要在 Flash 中对 URL 进行签名。使用托管 PHP 文件,您可以向该文件发出 AJAX 请求以获取签名 URL。为此,您的 S3 存储桶的目录结构必须具有一致的模式,使得文件位置在给定一些输入的情况下可以通过编程确定。
我不认为这是一个可以绕过的过程。URL 签名只能在服务器端完成,而不能在客户端完成。如果您想查看我的 AJAX 示例代码,请告诉我。我把它贴在这里给你
3)签名过程至少使用三个变量来创建签名 - 时间戳、文件位置(bucket/folder/floder/file)、S3 Secret Key。因此,对文件的每个请求都应具有单独的签名。签名 URL 的有效期应该非常有限(比如 10 秒)。能在这 10 秒内找到 URL 的用户应该能够下载该文件。
仅具有随时间戳而变化的签名可能会破坏(如果不是完全的话)具有签名 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 进行合理安全流式传输的关键。