rou*_*uen 7 android in-app-purchase in-app-billing xamarin
我正在使用Xamarin应用程序实现Google Play应用内结算,因此我查看了android和xamarin文档.他们都建议使用模糊的方法来混淆应用程序中的公钥:
http://developer.android.com/training/in-app-billing/preparing-iab-app.html
安全建议:强烈建议您不要对Google Play提供的确切公共许可证密钥字符串值进行硬编码.相反,您可以在运行时从子字符串构造整个公共许可证密钥字符串,或者在将其传递给构造函数之前从加密存储中检索它.这种方法使恶意第三方更难以修改APK文件中的公共许可证密钥字符串.
http://components.xamarin.com/gettingstarted/xamarin.inappbilling/true
虽然最佳做法是在远程服务器上而不是在设备上执行签名验证,但这可能并非总是可行.另一种技术是混淆您的Google Play公钥,并且永远不会将已组装的密钥存储在内存中.Xamarin.InAppBilling提供了Unify例程,可用于将您的Google Play公钥分成两个或多个部分,并使用一个或多个键/值对对这些部分进行模糊处理.此外,Xamarin.InAppBilling始终在内存中加密您的私钥.以下是使用Unify对私钥进行模糊处理的示例:
string value = Security.Unify (
new string[] { "X0X0-1c...", "+123+Jq...", "//w/2jANB...", "...Kl+/ID43" },
new int[] { 2, 3, 1, 0 },
new string[] { "X0X0-1", "9V4XD", "+123+", "R9eGv", "//w/2", "MIIBI", "+/ID43", "9alu4" })
Run Code Online (Sandbox Code Playgroud)
但无处解释,这里的交易是什么.为什么有人想看到这把钥匙?如何看到/替换我的APK中的密钥会有什么好处?这里有什么可能的"攻击"?谢谢.
小智 2
我的理解是,作为您的公钥不一定是秘密的,但这只是帮助防止某人轻松用自己的密钥替换您的密钥的另一种方法。它主要是让密钥在内存中时变得模糊,使其更难以取出。
假设您的应用程序使用它来下载额外的内容。如果用户用他们知道私钥的公钥替换您的公钥,他们可以在不联系服务器的情况下生成购买收据,并且您的应用程序会认为它们是真实的。
避免这种情况的最佳方法是在您自己的服务器上进行验证,这样他们就无法获取代码。如果服务器验证了它,就会下载。
无论您做什么,如果他们愿意花时间这样做,您的应用程序都可能被黑客入侵,这是事实。即使在完成所有密钥检查之后,也可能只需翻转一位即可更改密钥检查的结果。目的是给他们增加一个需要克服的障碍。
| 归档时间: |
|
| 查看次数: |
1668 次 |
| 最近记录: |