2012-03-27 50 views
1

我正在爲病毒性營銷活動創建一個遊戲,其中約100個玩家中有一個可以訪問某個專用thingamajig的QR代碼。遊戲需要從數據庫中提取信息,因爲隨着時間的推移,遊戲環境會「增長」。如何安全地將我的AS3/Flash項目綁定到數據庫?

我還沒有對如何做到這一點還沒有決定,但我有2個想法,各有各的擔憂:

解決方案1:SWF連接到數據庫

關注:我有反編譯SWF之前,這是非常容易的。我該如何保護我的數據庫憑據?

解決方案2:讓SWF連接到查詢數據庫的.php腳本。這樣我的數據庫連接證書在php文件中是安全的。

問題:但是,如何確保PHP腳本不被自定義腳本訪問?有人可以從SWF源代碼獲取php URL,並直接訪問它,繞過Flash應用程序。

+0

http://stackoverflow.com/questions/73947/what-is-the-best-way-to-stop-people-hacking-the-php-based-highscore-table-of-af – shanethehat 2012-03-27 20:06:32

回答

2

你需要明白一件事。
任何客戶端可以,如果涉及金錢可能會被黑客入侵。

就是這樣說的,安全是關於層次的,涉及層越多,被黑客越難。
有很多方法可以使用並將它們組合在一起,這將消除平均swf黑客的圖像。

我會從第一個開始就不會在客戶端存儲敏感信息(IE:服務器編譯的SWF)
如果您有數據,可以抓取/修改。

接下來,我將使用公鑰加密發送到swf和從swf發送的所有數據。此密鑰將經常過期。要獲得密鑰,swf必須傳遞用戶憑據(登錄)。
在服務器端,您可以通過會話跟蹤用戶。

您可以用持久連接
httsp,SSL加插座連接支持,TSL
和許多許多方案可供挑選。

選擇是你的。

但是,真正的問題是你想走多遠。

1

因爲您確定的原因,我會立即將解決方案1排除在外。

所以我們來談談如何規避解決方案2的問題。

我看到的是一種常見的處理方法,就是讓服務器端腳本處理這些特殊項目的生成。如果您看過很多在線Flash遊戲,我相信您會同意Flash幾乎完全負責UI,其餘部分由後端處理。這當然限制了你可以這樣做的遊戲類型。

還有另一種方法。如果你可以讓你的後端生成你的swf,你可以存儲僅在有限時間內有效的會話數據。這當然不必是存儲所有遊戲資產的同一swf,而只需要與後端進行通信所需的類。動態生成服務器交互swf將允許存儲會話重要數據,並且每次都使用不同的密鑰對其進行加密,以便如果有人竊取它,則會限制他們可以對其執行的操作,因爲新會話需要新的證書。

+0

而不是生成SWF,我可以發送一個會話參數給由承載SWF的PHP頁面生成的Flash項目......這樣,我的PHP方將知道哪些會話是活着的,並且只接受每個sessionID的分數一旦。這可能工作...感謝您與我一起看看 – joon 2012-03-27 19:27:47

+0

是的,但有人可以創建一個應用程序來處理會話數據,並可以發送他們喜歡的任何內容。你可以加密瑞士法郎本身這裏是一個例子http://www.veryinteractivepeople.com/?p=525 – Daniel 2012-03-27 20:03:03

+0

我會+1,但服務器將數據嵌入瑞士法郎只是不會好。安全應該始終是實時的。另外如果用戶連續數小時玩遊戲會發生什麼?他們是否會每隔一分鐘重新加載一次swf以獲取所需的加密密鑰? – 2012-03-27 20:04:49

相關問題