2014-01-23 79 views
2

現在我加入IAB首次。我已閱讀文檔,下載了示例,它似乎工作。 但是,設置東西不是我的問題,我想明白了以下兩個建議的由谷歌應提高安全性應用內結算API(IAB第3版)安全

  • 加密的公鑰

如果攻擊者反編譯我的應用程序,他還可以刪除我的加密,字符串分裂或位移事物。

  • 開發人員負載

同樣的事情在這裏。其實我可以像谷歌推薦的那樣做。我有我的服務器上的用戶ID,可以把這個請求和事後比較...但我認爲這是很容易從代碼中刪除我的應用程序反編譯時的邏輯。

我混淆我的代碼使用ProGuard我總是反編譯我的應用我把它上傳到谷歌打前,看看它的工作原理,並設置正確。這就是爲什麼我說這兩個建議沒有帶來很大的安全利益。

我也知道了私有/公共密鑰系統是如何工作的。這就是爲什麼我可以說,我的應用程序不可能在不反編譯的情況下與「假」服務器通信。如果谷歌不會使用某種異步加密我可以理解爲什麼我要檢查,如果響應來自一個假的服務器來...

你能幫我明白嗎?

乾杯, 斯特凡

回答

1

安全是所有關於投資的努力之間的權衡成爲黑客從它黑客攻擊您的應用程序,並獲得收益。如果您的應用程序花費99美分,而黑客需要3小時才能進行黑客攻擊,並且他需要一次又一次地破解每個新版本,那麼將時間投入黑客攻擊毫無意義,儘管他可以在技術上做到這一點。只需實施儘可能多的安全措施,讓您的應用成爲黑客的不具吸引力的目標。

不安全地存儲公鑰將允許攻擊者輕易地用自己的公鑰替換它。如果您的公鑰已被替換,那麼您的應用將成功驗證攻擊者服務器簽署的響應。這就是爲什麼您需要更加困難地在應用程序中查找和替換您的公鑰。

發展的有效載荷。當攻擊者試圖給你的應用程序一個有效的簽名響應時,它被用來保護你的應用程序免受攻擊,而這個響應已經被另一個用戶從過去的另一個用戶使用過。例如,我過去購買了您的應用的擴展程序,並以字節形式存儲了Google Play響應。如果您的代碼無法區分兩個有效的響應,那麼我可以將此響應提供給其他用戶,他們可以將其用於進一步購買。這就是Google建議添加開發負載的原因,您可以驗證有效響應何時返回。在一個簡單的情況下,這可以是用戶的電子郵件。在更復雜的情況下,您需要一臺服務器,它將爲用戶購買產生一個字符串並將其存儲在數據庫中。稍後,當響應返回時,它將再次驗證該響應是否生成了字符串。

我希望這給你一個更好的理解爲什麼這是必要的。

+0

感謝您的回覆。我仍然不明白。我不明白黑客如何能夠給我一個有效的簽名回覆。您需要私鑰才能創建有效的簽名。如果這個系統不安全,所有的網絡銀行(實際上所有的https)網站都不安全。我已經添加了開發人員有效負載,但我不喜歡它,因爲我需要兩個額外的網絡調用... – stefan

+0

認爲是黑客。我以我的設備爲根,並以Google Play應用爲例,它存儲真正有效的簽名回覆。我從你那裏買了一些東西,我有這個迴應。現在,我可以將此響應發送給任何其他用戶,如果用戶可以用這個響應替換真實的響應,您的應用將始終接受它。 –

+0

Aaaahhh ...我想我開始明白了:)當我沒有放置自定義有效載荷時,響應簽名正確,但不會綁定到任何人或任何東西。這就像一個通配符^^只有當我把一個自定義有效載荷哈希(指紋)將改變該包...我是對的?但是這意味着使用用戶帳戶(email?)作爲有效載荷就足夠了。所以我可以刪除我的兩個網絡電話,不需要服務器,對吧? – stefan