2009-03-02 37 views
3

我正在構建一個基於PHP的Web應用程序,並且正在集成基於Flash的圖表引擎。 Flash圖表需要爲其數據發出AJAX請求。此請求失敗,因爲它被視爲新的用戶代理,並且不包含PHP會話Cookie來識別它。所以,它會被重定向到登錄頁面。如何讓Flash共享瀏覽器cookie /會話?

我讀過一些黑客,使這項工作,包括提供的查詢字符串的會話ID,但它開創了安全漏洞。我如何讓Flash和PHP自動共享基於Cookie的會話狀態並保持安全?

回答

0

使用ExternalInterface交談到Flex圖表。有些瀏覽器相關信息也可以通過LoaderContextBrowserManager類傳遞。稍微介紹一下AS3文檔。

1

如果會話cookie發起足夠早的話,應該沒問題。我在JavaScript AJAX和Flash請求之間共享Cookie也存在類似的問題(如果您也想調用該AJAX,請繼續:-)),並且我們通過確保JavaSCript完成初始化cookie的請求來解決它們這足以讓Flash在發送請求時瀏覽器已經擁有會話cookie。

還確保Cookie路徑設置爲「/」是個好主意。這就是說,如果你不能得到它的工作 - 如直截了當地說 - 你可以使用JavaScript AJAX調用將信息存儲在HTML DOM中,然後使用ExternalInterface調用從Flash對象中獲取它。但是,一定要確保您的Flash對象

2

上至少設置「的allowScriptAccess =導航特殊」在IE就會天真地工作。在firefox中,實現這一目標的唯一方法是將會話ID發佈到Flash腳本(即處理器的PHP腳本)中,並讓它從中恢復會話。

+0

您究竟在發帖時如何?我想你可以將它包含在object/embed參數中,但它會作爲GET發送,而不是POST。 – spoulson 2009-03-18 13:46:52

-1

你可以嘗試發送到PHP 2個參數一個SESSION_ID,第二個是從客戶端(例如IP)相結合的一些信息的鑰匙,並與存儲在服務器上,並從閃存請求一個密鑰來加密它你檢查看看第二個參數是否與客戶請求匹配,這樣如果有人試圖進行會話竊取他們不能匹配第二個參數

1

你應該知道在cookie中傳輸一個會話ID: ,或者在GET HTTP指令的參數字段中沒有不同的安全性。

+1

除了如果您在查詢行中傳輸它,它可能在瀏覽器歷史記錄和Web服務器日誌(可能是途中的任意第三方代理)中可見。它也可能通過`Referer`頭部在完全不相關的站點中結束。 – 2010-01-29 11:04:11

相關問題