只有登录用户才能从我们的服务器播放音频

sjo*_*urg 5 security silverlight telerik audio-streaming

我们制作了一个silverlight应用程序,用户可以通过telerik radmediaplayer控件从浏览器中预览音频文件.

这些文件位于网络服务器上,任何嗅探交通信息的人都可以下载该文件.我们希望阻止未登录的用户访问/下载这些文件.

除了为应用程序提供某种临时有效URL并实现自定义httphandler ...我们有什么选择?

如果我们的客户可以下载文件,这不是太大的问题,我们只是不希望世界其他地方也有访问权限.

任何想法都会受到欢迎!

[更新]我唯一能想到的是:

  • 将文件托管在非公共文件夹中
  • 如果用户请求预先删除文件,请将其复制到新名称下的公用文件夹([guid] .mp3)并返回其URL
  • 每x分钟清理一次公用文件夹.

Bra*_*rad 3

不要让 Web 服务器直接从目录中提供文件。将应用程序的一部分放在前面,并留下一个服务器端脚本来提供这些文件。将原始音频文件保留在网络根目录之外。

例如,您的客户端应用程序将访问如下文件:

http://someserver/yourscript?audio_asset_id=12345
Run Code Online (Sandbox Code Playgroud)

处的代码yourscript将验证会话数据,确保用户已登录,然后找出资产 ID 的真实路径12345,并将其内容回显给客户端。Content-Type不要忘记也包含正确的标题。

一旦这些资产的访问处于您的控制之下,您就可以实施您喜欢的任何安全措施。如果您的会话区域已经受到很好的保护,那么这应该没问题。我还建议实施合理的配额。如果您从多个 IP 地址使用相同的会话 ID 收到对资产的 100 个请求...有些地方不对劲。

  • 我的意思是,您看起来就像这样(2 个请求): - 播放器请求服务器上的媒体文件(例如在 http://someserver/yourscript?audio_asset_id=12345 上)。- 服务器使用媒体文件的 URL 进行响应(例如 item12345.mp3)。- 播放器使用给定的 URL 请求媒体文件。- 服务器用媒体文件响应。而不是(一个请求): - 播放器请求服务器上的媒体文件 (http://someserver/yourscript?audio_asset_id=12345) - 服务器查找 item12345.mp3 文件 - 服务器响应 item12345.mp3 的内容Content-Type=音频/mp3(左右) (2认同)