当前位置: 首页 > 面试题库 >

进行InApp结算时如何保护Google Play公钥

武功
2023-03-14
问题内容

实际上,这对于保护公共密钥有点愚蠢(那么公共密钥的定义是什么?),但是根据Google的文档:

为了保护您的公钥不受恶意用户和黑客的侵害,请勿将其作为文字字符串嵌入任何代码中。而是在运行时从片段中构造字符串,或使用位操作(例如,与其他字符串进行XOR)以隐藏实际的密钥。密钥本身不是秘密信息,但是您不想让黑客或恶意用户容易地用另一个密钥替换公共密钥。

有什么推荐的方法吗?

我知道有很多方法可以做到,我只是不想遵循过去人们处理 密码哈希 的方式(例如md5,sha1等),我想知道上述用例的最佳实践。


问题答案:

这里涉及很多内容:)您引用的段落后面的意思是,为了确保应用内结算的安全,您需要验证交易签名。这些签名是使用与您的开发人员帐户相关联的私钥签名的。密钥位于Google的服务器上,因此可以假设没有其他人可以用它签名数据,这是相当安全的。要验证它,您需要您的公共密钥,可以从开发者控制台复制它。如果有人在您的应用程序中替换了它,他们可能会愚弄它以接受来自未经授权的来源的应用程序内计费交易,因为如果他们植入了公钥,他们可能还会控制相应的私钥。但是,实际上,简单地在正确的位置修改您的代码以始终为或可能拥有的类似方法返回true
isLicensed()hasItem()而没有人这样做。

当然,保护密钥的最佳方法是完全不在您的应用程序中使用密钥。将所有事务验证逻辑移至您的服务器,然后使用HTTPS连接到它。正确验证证书链,以确保您正在与自己的服务器通信。否则,有人可能会混淆DNS,并欺骗您的应用程序以连接到自己的服务器。几周前宣布了针对iOS购买的类似攻击。

接下来的最好的事情就是以某种方式混淆密钥,并将其包含在您的应用程序中。这样做的好处是您不需要服务器,但是缺点是,如果某个人有足够的决心,他们就会发现它,因为他们总是可以反转应用程序的字节码。因此,最好的选择是拿出自己的原始方式来完成,而这种方式不会出现在公共论坛上:)为了使操作更困难一点,您可以在本机代码中实现验证部分,但这比较困难(但不是)不可能)进行分析。尽管如此,如上所述,在正确的位置修补字节代码比尝试替换公钥要容易得多,因此大多数破解者都会这样做。



 类似资料:
  • 问题内容: 我想对已经列出我们公司产品的本地在线商店进行API调用,然后返回其详细信息,标签,照片等的JSON。除了保护我的API密钥之外,不包括敏感信息。 如何保护我的API密钥并向另一个网站发出GET / POST请求? 问题答案: 要向访问您网站的访问者隐藏API密钥,请在您自己的网站上使用PHP脚本充当中继。它接收Ajax请求(没有API密钥);添加您的密钥并发出自己的API请求;然后将响

  • 本文向大家介绍在保护交易记录时,您将如何进行风险管理?相关面试题,主要包含被问及在保护交易记录时,您将如何进行风险管理?时的应答技巧和注意事项,需要的朋友参考一下 回答:** 基于数据的价值,可以采用多种方法来处理风险管理。 首先,确定与组织的财务记录相关的威胁和漏洞,并相应地采取正确的对策。 另一种方法是注意备份计划。 第三是购买新的风险管理软件。

  • 问题内容: 我注意到我的网站上有奇怪的请求,试图找到phpmyadmin,例如 等等 现在,我已经通过apt在Ubuntu上安装了PMA,并希望通过不同于/ phpmyadmin /的网址访问它。我该怎么做才能改变它? 谢谢 更新资料 对于Ubuntu 9.10和Apache2,相应的设置位于该文件的链接中。该文件包含 如果要避免不必要的活动,则应将第一个更改为其他内容,例如: 问题答案: 最大的

  • 问题内容: 我已经使用Socket.IO了几天,这既令人兴奋又令人沮丧。缺少当前的文档/教程使学习变得非常困难。我终于设法创建了一个基本的聊天系统,但是有一个明显的问题。如何保护它? 是什么阻止了恶意用户复制(或编辑)我的代码并连接到我的服务器?我可以从我的PHP脚本中获取用户名并将其提交给Socket.IO,这样我就可以将他们识别为该用户(当然,PHP具有安全性),但是又是什么阻止了某人仅提交未

  • 问题内容: 我在public / images / picture.jpg中显示带有玉石的图片,但是我想保护一些图片或限制对公共文件夹的访问,怎么办? 问题答案: 注意:对于所有这些示例,我使用的应用程序结构如下: 您有两种选择。最简单的方法是让Express 在公共中间件 之前 通过路由器路由请求,从而使您可以截获请求: 结果: 这种方法的问题在于,在提供静态文件之前,请求必须一直通过应用程序的