我有連接到Android應用程式內計費幾個問題:應用內結算的安全性和設計問題
是否有可能實現從非市場應用程序購買?我知道這將是一個漏洞,但我沒有機會發現是否可能。
如何獲得特定產品的購買狀態?據我瞭解,可以使用
RESTORE_TRANSACTIONS
請求完成,但不建議經常使用。這不是一個理論問題。我的應用程序允許用戶使用應用內結算購買內容。內容可以從服務器上下載,服務器只有在購買內容時才允許內容下載。但是,如果沒有使用Android Market簽名的響應,它無法檢查是否購買了內容。我該如何從Android Market獲得物品的價格和描述?似乎我知道答案,而且「這是無法完成的」,但也許我錯了。有可能檢索物品的價格將是非常有用的。
這對我來說非常有趣,您是如何解決/將要在您的應用程序中解決這些問題的。任何這些問題的答案將不勝感激。
感謝您的回答!我還有一些問題。 1)如果我的應用程序反編譯,更改並重新編譯會怎麼樣?那麼這將是一個非市場應用程序。應用內結算是否會停止運作?2)當你在數據庫中存儲購買信息時,不可能有安全的購買計劃。所以,我正在開發一個應用程序,從服務器接收許可證文件並在本地進行檢查。我的服務器需要一些簽名數據才能生成許可證。我不能只是要求它提供許可證,因爲這會成爲服務器的漏洞。我應該如何使用當前的應用內結算實現來實現? – Michael 2011-04-13 19:31:21
市場根據您在將應用上傳到市場時用於簽署應用的密鑰進行簽名檢查。由於修改後的版本不會使用密鑰進行簽名,因此市場會拒絕它 - 但是,沒有什麼能夠阻止確定的攻擊者修改.apk文件,從而完全跳過IAP進程並假定您已經購買了所有內容。 。我提供的鏈接有一個「安全」部分的鏈接,涵蓋了對這類事情的保護。要回答第二個問題,請查看LVL(許可證驗證庫)。這應該涵蓋你的需求。 – 2011-04-13 19:53:49
我使用應用內結算購買從服務器下載的內容。所以,即使.apk被修改,內容也不能在沒有購買的情況下下載。即使它被複制,它也不能在沒有許可證文件的情況下使用。當然,許可證驗證也可以修改,但這是另一個問題。我不確定Android Market是否檢查應用程序的簽名,但我更喜歡它。關於文檔,我閱讀了所有應用內賬單文檔和樣本的所有源代碼。但是我所問的事情並沒有涵蓋在那裏。 LVL不會幫助我,因爲它不能用於銷售內容。 – Michael 2011-04-13 20:42:35