2009-11-02 28 views
0

我最近將一個Flash應用程序部署到服務器,並且在製作HTTPService請求時現在遇到錯誤。我已經把我認爲是wwwroot文件夾中最可能的crossdomain.xml可能的東西,並仍然得到錯誤。Flash安全錯誤使用crossdomain.xml訪問URL

有趣的是,這個錯誤似乎只發生在請求是由直接用戶交互(即按鈕點擊)發出的。應用程序發出其他請求(通過其他方式啓動)(即creationComplete),並且它們似乎按預期工作。

任何人都可以看到crossdomain.xml有什麼問題,或者有其他建議嗎?

ERROR MESSAGE

[RPC故障faultString = 「安全性錯誤訪問URL」 的faultcode = 「Channel.Security.Error」 faultDetail = 「目的地:DefaultHTTP」] 在mx.rpc :: AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler() 在mx.rpc ::響應/故障() 在mx.rpc :: AsyncRequest /故障() 在DirectHTTPMessageResponder/securityErrorHandler() 在flash.events::EventDispatcher/dispatchEventFunction() 在flash.events::EventDispatcher/ dispatchEvent() at flash.net::URLLoader/redirectEvent()

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
<site-control permitted-cross-domain-policies="all" /> 
<allow-access-from domain="*" secure="false" /> 
<allow-http-request-headers-from domain="*" headers="*" secure="false" /> 
</cross-domain-policy> 

回答

1

您需要小心這些跨域策略文件,因爲它們可能會打開一些嚴重的安全漏洞。您不應該在使用cookie或基本身份驗證的站點上使用*策略,也不應該在內部網服務器上放置*策略。

避免這些安全問題並使其工作的最簡單方法是確保從中加載SWF的URL以及請求所使用的URL是相同的協議,主機名和端口(如果指定的話) 。如果他們不同,那麼你應該看看使用代理,以便他們是相同的。 BlazeDS或Apache的禁令很容易被設置爲代理。

+0

您能否詳細說明爲什麼收緊crossdomain.xml非常重要?似乎有更多更簡單的方法來嘗試攻擊某人的服務器,除了使用閃存做到這一點... – Osman 2009-11-04 22:36:47

+0

這就是爲什麼它很重要: http://tech.slashdot.org/story/09/11/05/1552204/Facebook-and-MySpace-Backdoors-Found-Fixed – 2009-11-05 16:41:04

+0

Ahh ok,因爲AJAX不允許跨域腳本 – Osman 2009-11-05 17:11:04

0

嘗試用記事本打開 配置文件 替換 的http:// 服務器名 /的ArcGIS/REST /服務/底圖/地圖服務器/# 與 的http:// SERVERIP /的ArcGIS/REST /服務/ BaseMap/MapServer /#

相關問題