2014-02-10 107 views
0

這關係到
AppStore in-App Purchase Receipt Verification IssuesiTunes的應用程序內購買收匯覈銷 - 晦澀,JSON

在簡短的問題 - 從iTunes收據數據編碼有點兒怪,JSON格式沒有任何規範它。接受的答案指出,沒有必要解碼它,它只能發送到iTunes。

在我的情況下,我想解碼該數據,以確保bundle_id參數等於我的應用程序bundle_id
https://buy.itunes.apple.com/verifyReceipt方法將收據視爲有效,即使它不是爲我的應用程序生成的 - 所以如果黑客將從其他應用程序發送的有效收據發送到我的服務器 - 他就會成功。

問題是如何正確地進行這樣的驗證,額外的步驟當然不是iTunes開發者所期望的(否則他們不會使用僞JSON),但我認爲這是保護這種攻擊所必需的。
對此有何想法?

回答

1

吉爾,你應該考慮驗證不透明的收據數據,而不是試圖解釋它。發送給Apple的verifyReceipt服務並檢查響應。這將是一個非奇怪的JSON對象。如果「status」字段爲0,那麼Apple認爲它是一個有效的收據,但它取決於您的服務器應用程序以確定它是否在有效的上下文中使用。要做到這一點,您可以檢查「收據」對象,您可以在許多其他事物中找到捆綁包和產品ID。

如果您決定在發送給蘋果公司之前對收據數據進行一些預先驗證,那麼您也可以做一些額外的工作。它是一個base64編碼的JSON對象,它包含兩個其他base64編碼對象,其中一個是上述的接收數據。這種方法的問題在於數據不打算由Apple服務用戶檢查,因此如有更改,恕不另行通知。但它可能是一種有用的調試技術。