2011-01-09 40 views
0

我有一個crossdomain.xml文件,它允許僅在特定幾個域上運行的SWF從我的域下載資源。然而,解決這個問題的一個簡單方法是讓用戶將SWF下載到本地計算機,然後在其中運行(即在Windows資源管理器中雙擊它,而不是通過運行http://localhost)。似乎發生這種情況時,crossdomain.xml文件將被忽略。是否可以阻止本地運行的SWF(AS3)從我的網站下載?

我明白,在我的動作,我可以這樣做:

if (Security.sandboxType.indexOf(Security.REMOTE) == -1) 
// running locally - don't allow 

然而,它是非常容易有人反編譯SWF,只需刪除此行。

是否有可能在服務器端做些什麼來阻止本地運行的SWF從我的網站下載?我試着檢查引用者,但是這個字段通常沒有填充。有沒有人有任何其他想法?

謝謝,馬特

回答

2

你將永遠無法完全阻止下載使用crossdomain.xml。如果用戶只是將所請求的URL複製並粘貼到空白瀏覽器窗口中,則該機制停止工作。另外,機制can be cheated by using a proxy。它所做的只是提高一點吧,特別是當有人試圖使用SWF視頻播放器來流式傳輸託管在您網站上的FLV視頻時。

如果保護您的資源是值得的,您應該考慮添加某種認證/授權機制和/或加密。

+0

好點。我只是感到驚訝,因爲很多想法已經清楚地進入了crossdomain.xml文件,因此我很驚訝它很容易規避。 – Matt 2011-01-10 10:35:53

0

雙擊並運行SWF通常只在安裝了獨立播放器的情況下才起作用,否則它將打開w /瀏覽器。 Adobe是否在Flash Pro之外分發獨立播放器?他們不習慣,儘管隨着Flash Platform Tools的增長,他們現在可能會這樣做。

不過,我希望大多數用戶不會安裝獨立播放器。在安全性和保護內容方面,我懷疑你關注的是錯誤的東西。

+0

不一定,如果我下載SWF並雙擊它,它會在網頁瀏覽器中打開,但是使用file:// URL而不是http:// URL,並且在發生這種情況時,crossdomain.xml文件將被忽略。 – Matt 2011-01-10 10:36:54

相關問題