2012-08-14 34 views
2

有沒有什麼辦法可以使資源保密。ASP.NET MVC3:私有資源

我有一個視頻內容網站。他們上傳。文件存儲在網絡服務器上。

文件被嵌入到網站中。

現在,如果我在谷歌瀏覽器查看「源代碼」,我看到:現在

<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> 

正如你所看到的,位置是由聞名。將此附加到網站地址,嘿presto你可以直接訪問視頻?這意味着您可以保存文件或從其他未登錄的位置訪問文件。

請告訴我阻止他們使用URL並將其嵌入到自己的網站等

還是我想錯?

我該如何預防這樣的事情?

回答

1

Following this, I found on another question.

的解決方案是一個web.config添加到要拒絕訪問該文件夾。

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

這意味着他們必須登錄到您的網站才能被授予訪問媒體的權限。因此,水蛭視頻/內容。

1

這是一個棘手的問題。我的解決方案是創建一個自定義HttpHandler(msdn article)並將其分配給一些自定義擴展,* .zzz,,因此當您爲嵌入元素生成src時,它將如下所示:/Videos/uploaded.zzz?id = {} someId。然後在HttpHandler中,我將解析id到所請求的視頻並返回響應。如果您擔心有人直接鏈接到/Videos/uploaded.zzz網址,您可以在返回媒體文件之前檢查處理程序代碼(ProcessRequest方法)是否授權(在請求期間登錄)。你可以隨心所欲,根據對文件的請求數加入節流等。

我還沒有編寫代碼來測試這個,但它應該是相當平凡的。

+0

這不會阻止他們使用自己的嵌入來直接鏈接URL。他們可以通過你提到的任何安全措施。有必要讓視頻只能在我的網站上看到。所以沒有人可以直接聯繫。 – Doomsknight 2012-08-15 08:37:43