2

有没有办法将资源设为私有。

我有一个视频内容网站。他们上传。文件存储在网络服务器上。

文件被嵌入回网站。

现在,如果我在 google chrome 中查看“源代码”,我会看到:

<object classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" height="400" width="600" >
<param name="URL" value="/Videos/Tree%20Felling.wmv" />
<param name="autoStart" value="False" />
<param name="uiMode" value="full" />
<param name="stretchToFit" value="True" />
<param name="volume" value="75" />
<embed src="/Videos/Tree%20Felling.wmv" width="600" height="400" type="application/x-mplayer2" autoStart="False" uiMode="full" stretchToFit="True" volume="75" />
</object>

如您所见,该位置现已公布。将此附加到站点地址,嘿,您可以直接访问视频吗?这意味着您可以保存文件或从其他无法登录的位置访问它。

什么可以阻止他们使用 URL 并将其嵌入到他们的网站等中。

还是我想错了?

我该如何防止这种事情发生?

4

2 回答 2

1

在此之后,我发现了另一个问题。

解决方案是将 web.config 添加到您希望拒绝访问的文件夹中。

<?xml version="1.0"?>
<configuration>
    <system.web>
        <authorization>
            <allow users="*"/>
            <deny users="?" />              
        </authorization>
    </system.web>
</configuration>

这意味着他们必须登录到您的网站才能被授予访问媒体的权限。因此,不能窃取视频/内容。

于 2012-08-15T09:18:08.167 回答
1

这是一个棘手的问题。我的解决方案是创建一个自定义 HttpHandler ( msdn article ) 并将其分配给一些自定义扩展名*.zzz,因此当您为嵌入元素生成 src 时,它看起来像这样:/Videos/uploaded.zzz?id= {someId}。然后在 HttpHandler 中,我会将 id 解析为被请求的视频并返回作为响应。如果您担心有人直接链接到 /Videos/uploaded.zzz 网址,您可以让处理程序代码(ProcessRequest方法)在返回媒体文件之前检查用户是否已获得授权(在请求期间登录)。您可以随心所欲,根据对文件的请求数量添加限制等。

我还没有编写代码来测试它,但它应该很简单。

于 2012-08-14T21:16:50.070 回答