2011-11-26 241 views
0

我爲遊戲統計系統(PHP)創建了自己的API。 我希望用戶能夠從他們的遊戲登錄系統。安全API身份驗證

基本上,遊戲是用GM:HTML5(GameMaker for HTML5)製作的,這意味着它只是被模糊處理,但仍然可以通過任何JavaScript調試器讀取。

爲了使其工作,用戶將不得不包含一個PHP庫,它將連接到我的API系統。 但是,我想通過使用API​​密鑰限制訪問。

如果我發送帶有請求的API密鑰,它將可見(例如,通過使用Firefox的開發者控制檯)。使用該API密鑰,任何人都可以「登錄」並提交統計數據。

我想要做的是,以加密形式發送託管遊戲的域名和登錄請求。 (只需從我的PHP庫到服務器的簡單GET請求)。然後服務器將不得不解密該字符串(加密的域/ IP)並檢查它是否與也與請求一起發送的API密鑰相匹配。

但我想知道,這實際上有多安全。

如果不安全,那將是更好的方法?

回答

-1

選項2:

寫你自己的協議。一定要考慮所有這些因素:

  • 數據不能放在一個代理級別(簽署所有領域)
  • 請求必須不重玩編輯(添加一個隨機數必須是唯一的)
  • 該請求必須立即執行(添加時間參數)

您想要一個API系統,因此包含一個API密鑰。

+0

任何代碼示例...?:D(用於遠程PHP) – Jeffrey

+0

$ signData = array('oauth_time'=> time(),'oauth_nonce'=> uniqid(),'oauth_consumer_token'=>'abcdef'); - 然後用HMAC標記所有這些字段(使用oauth_consumer_secret)。我想說的是:您可能不希望整個OAuth實現,但其中的簽名概念非常有用。 –

+0

我根本不想使用OAuth :( – Jeffrey

1

您可以考慮使用OAuth 1.0(或2.0,如果您有SSL連接)。這是一個已經在Twitter和Facebook等網站上得到驗證的協議,但實現起來相當簡單。

http://tools.ietf.org/html/rfc5849

但是,請注意,到底有沒有安全的lib是安全的。第一次開發人員預覽發佈後的第二天,iOS5的OAuth庫就被破解了。基本規則:如果用戶有權訪問二進制版本,則不安全。

+0

我已經考慮OAuth,但我想有我自己的「系統」爲此... – Jeffrey

+0

爲什麼重新發明輪子? –

+0

OAuth比需求複雜得多! 我只想控制它的工作方式,而不必依賴現有的系統/協議。 – Jeffrey

0

這是隱含的違反CWE-602,並且永遠不會是解決此問題的方法。攻擊者總是能夠使用諸如TamperData這樣的工具來攔截和修改請求或以其他方式修改代碼。也許你正在尋找「(安全),雖然默默無聞」。

+0

什麼是無用答案 – Jeffrey

+0

@Artaex Media沒有它的正確答案,你試圖做一些根本不可能的事情,可悲的是你認爲它可能。 – rook

+0

我正在尋找更好的方法(如果有的話),我不問它是不可能的。 – Jeffrey