5

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

这些文件位于网络服务器上,任何嗅探流量的人都可以下载该文件。我们希望防止未登录的用户访问/下载这些文件

除了为应用程序提供某种临时有效的 url 并实现自定义 httphandler 之外……我们还有哪些选择?

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

任何想法都会受到欢迎!

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

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

1 回答 1

3

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

例如,您的客户端应用程序会像这样访问文件:

http://someserver/yourscript?audio_asset_id=12345

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

Once the accessing of these assets is under your control, you can implement whatever security measures you like. If your sessions area already pretty well safe-guarded, this should be fine. I would also recommend implementing sane quotas. If you get 100 requests on an asset using the same session ID from multiple IP addresses... something isn't right.

于 2012-08-17T15:15:55.503 回答