应用内计费安全

2024-04-06

我已经完成了在应用程序计费 v3 中使用的应用程序的开发。我的应用程序是一个考试帮助应用程序,其中包含插入数据库的问题列表。让我担心的是安全性,因为除了 proguard 之外几乎没有其他东西了。我的应用程序查询已购买商品的库存,因此存储购买的商品不是问题。

因此,第一个问题是有人可以反编译该应用程序(我已经完成了),即使使用 proguard,您也可以毫不费力地检索所有问题。

接下来是应用程序的公钥。这可以很容易地从我的应用程序中获取,并且根据开发人员指南,这是我应该保证安全的东西。

但是我真的不知道如何实施任何形式的安全性。或者甚至我应该在安全方面走多远。如果没有服务器,如果我将所有内容都保留在设备上,我认识到它不会是完美的(远非完美),但我至少希望阻止而不是逗乐黑客。

所以本质上问题是:

我应该使用什么类型的安全性以及如何使用它?只要向我指出逐步浏览的链接,以便我能够理解它,那就太棒了。

非常感谢!

澄清:

不涉及服务器。数据存储在应用程序中。当查询库存时(通过 queryinventoryasync 方法),它会返回是否购买了库存,并且每次应用程序启动时都会运行。在应用程序计费本身中,我认为没问题,我正在询问有关我自己的应用程序的应用程序公钥的更多信息 - 我的意思是以某种方式使其更难以复制,但目前我刚刚将其分成 15 个字符串,然后我只是“添加”它们在运行时相互连接,但这比仅将其作为一个字符串好不了多少。我想以某种方式加密它只是不知道如何。


好问题。

公钥必须在设备上可用才能使用。一旦进入设备,它就不再受到真正的保护。密钥本身并不是秘密,但我们需要使其可能的替代成为一项更加困难的任务。

您可以做的是使用所谓的 XOR 加密。这是 XOR 加密器和解密器方法的示例。

public static String xorEncrypt(String input, String key) {
    byte[] inputBytes = input.getBytes();
    int inputSize = inputBytes.length;

    byte[] keyBytes = key.getBytes();
    int keySize = keyBytes.length - 1;

    byte[] outBytes = new byte[inputSize];
    for (int i=0; i<inputSize; i++) {
        outBytes[i] = (byte) (inputBytes[i] ^ keyBytes[i % keySize]);
    }

    return new String(Base64.encode(outBytes, Base64.DEFAULT));
}

public static String xorDecrypt(String input, String key) {
    byte[] inputBytes = Base64.decode(input, Base64.DEFAULT);
    int inputSize = inputBytes.length;

    byte[] keyBytes = key.getBytes();
    int keySize = keyBytes.length - 1;

    byte[] outBytes = new byte[inputSize];
    for (int i=0; i<inputSize; i++) {
        outBytes[i] = (byte) (inputBytes[i] ^ keyBytes[i % keySize]);
    }

    return new String(outBytes);
}

您需要的是选择一个密码字符串(String key)并加密您的公钥(String input) 使用它。您可以将此加密密钥存储在类中。当您需要真正的键值时,您可以调用xorDecrypt()使用密码和公共(加密)密钥字符串。密码也是您存储在代码中某处的字符串。正如我所说,我们并没有真正保护它,但我们让它更难找到和/或替换。

您也可以添加关于如何组合加密公钥和密码的更复杂的逻辑。这只会增加更多的复杂性,但不会为您提供任何保证您的密钥不会被解密。任何状况之下谷歌证实 http://developer.android.com/google/play/billing/billing_best_practices.html#key异或加密总比没有好。

Android 4.3 添加了一些更多的安全功能,也可用于存储公钥。该解决方案需要服务器通信和硬件支持才能真正安全。这些都是密钥链增强功能和 Android Keystore Provider http://developer.android.com/about/versions/jelly-bean.html#43-enterprise-security.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用内计费安全 的相关文章

  • getItem 与 getItemAtPosition

    有两种方法可以获取列表视图中的选定项目 list getAdapter getItem position list getItemAtPosition position 我的问题是 哪一种是首选的做法 我见过人们同时使用这两种方法 您可以使
  • 从 Throwable 获取错误代码 - Android

    我怎样才能从错误代码可投掷 https developer android com reference java lang Throwable html public void onFailure Throwable exception 我
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • KitKat(及更低版本)设备上的 Android Material Design

    我将在我们学校开发一个 Android 应用程序作为一个项目 我想使用 Google 的新 Material Design 但我知道它仅适用于 Android L 设备 Jack Underwood 最近发布了名为 Today Calend
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 无法在自定义 AOSP 上安装 Google Play 中的某些应用程序:项目不可用。理由:9

    我在尝试从 Google Play 安装某些应用程序时收到以下错误 LibraryUtils isAvailable not available restriction 9 DocUtils getAvailabilityRestricti
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • 更新到材质 1.2.0 后,材质按钮上缺少圆角半径属性

    这是我的材质按钮代码
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 材质设计图标颜色

    应该是哪种颜色 暗 材质图标 在官方文档上 https www google com design spec style icons html icons system icons https www google com design s
  • 通过 ADB 拔出设备:“找不到服务”

    我必须测试我的应用程序在打瞌睡模式下的行为 根据文档 https developer android com training monitoring device state doze standby html testing doze 我
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项

随机推荐

  • s3 临时签名 URL 中缺少对象的自定义 404 页面

    我正在为 Amazon S3 中的一些私人信息生成一些签名 URL 如果签名链接已过期或对象不存在 则会报告 XML 错误以及 404 错误 或 403 禁止 是否可以将签名链接 404 重定向到自定义错误页面 这似乎与 S3 静态网站设置
  • VS2010没有断点时调试器停止

    我最近更改了调试器中的一个选项 我认为这就是导致此问题的原因 但我似乎无法 撤消 它 我谷歌 所有命中都返回相反的 为什么调试器 not在断点处停止 无论如何 有人可以透露一些信息吗 编辑 当我在调试模式下按 f5 时 每次 它进入 Pro
  • Logstash创建管道但未创建索引

    我正在尝试使用 json 文件在 elasticsearch 云上创建索引 我已经创建了如下所示的配置 input file path gt root leads json start position gt beginning ignor
  • 在WPF中画一个十字

    我有一个 WPF 控件 I need to have in background a cross like this After that I d be able to add other controls over my crossed
  • 对数组元素(带有数字的字符串)进行排序,自然排序

    我有一个像这样的数组 IL0 Foo PI0 Bar IL10 Baz IL3 Bob says hello 并且需要对其进行排序 使其看起来像 IL0 Foo IL3 Bob says hello IL10 Baz PI0 Bar 我尝试
  • PHP 循环动态变量

    我正在尝试创建一个动态变量 我有一个循环 我希望它循环记录并为每个记录创建一个变量 我的代码 ct 1 foreach record as rec var ct rec Name ct ct 1 echo var1 当我尝试使用上面的代码时
  • 将 ToolBar 添加到 UITableView 的正确方法是什么?

    我正在编写一个基于导航的 iPhone 应用程序 我希望将 UIToolBar 停靠在屏幕底部 并在工具栏和导航栏之间滚动 UITableView 我见过几个论坛 其中有人建议处理此视图的视图控制器应该是标准 UIViewControlle
  • 车道检测器分隔线 C ++ 与 OpenCV

    现在我一直在用OpenCV进行图像分析 我想做的是识别车道分割线 我所做的如下 1 I receive a image 2 Then transform it to grayscale 3 I apply the GaussianBlur
  • 将 CodeMirror 与 Angular2 集成(打字稿)

    我目前正在致力于将 CodeMirror 编辑器添加到项目中 更准确地说是 Angular2 项目 但我做起来有困难 我的编辑器的实例化似乎无法正常工作 我的代码如下 编辑器 组件 ts import Component from angu
  • C++ 交换值的最有效方法

    我想知道在 C 中交换整数的最有效的操作方式是什么 为什么 是这样的 int a b a a b b a b a a b 比使用临时的更有效 还有其他更有效的方法吗 不只是要求其他方法来交换整数 以及为什么它们会更有效 赋值总是比进行算术运
  • 调整 UILabel 大小以适应自动换行

    这是 iPhone 应用程序的一部分 但通常应该适用于用 objC 编写的 Cocoa 我有一个 UILabel 保存各种数量的文本 从单个字符到几个句子 文本应始终以适合 UILabel 中所有文本的尽可能大的字体显示 最大行数设置为 4
  • List 复杂排序

    我有一个List
  • 使用 gradle 创建一个包含 web 应用程序中的类的 JAR

    IE 有没有等价的archiveClasses maven war plugin 的 true 设置 https maven apache org plugins maven war plugin faq html attached对于 W
  • 如何为谷歌云存储服务帐户进行密钥轮换?

    我已经编写了用于访问 GCS 存储桶的代码 以通过 java 中的 API 存储文件 该 API 需要 JSON 凭证文件 我已经从 google 控制台创建了该 JSON 文件 我需要每 90 天自动执行一次 JSON 文件或密钥轮换 如
  • ModalBottomSheetLayout 在返回导航上闪烁 (Jetpack Compose)

    我在用着ModalBottomSheetLayout import androidx compose material ModalBottomSheetLayout 并在模式表布局中有一些项目 当我按下一个项目时 它会导航到下一个屏幕 但是
  • 使用循环使用 Dataframe Pandas 创建 Excel 工作表

    我正在开发这个函数 它可以抓取网站上的 Fantasy Football 信息并将其写入 Excel 文件 最终 我希望在 Excel 工作簿的单独工作表中包含每周的信息 下面发布的代码可以完美运行 直到我想将其写入 Excel 工作簿 该
  • 使用 Nginx 为 Angular2 CLI 构建的应用程序提供服务会抛出 404、403

    我使用 Angular CLI 创建一个测试应用程序并使用 Nginx 为其提供服务 得到 404 或 403 我猜这是我的 Nginx 配置的问题 但为了额外确定 我已经提供了达到这一点所执行的所有步骤 这些是我遵循的步骤 安装的角度 c
  • 如何使用scala从apache Spark中的kafka主题读取json数据

    我是新的 Spark 您能否让我知道如何使用 scala 从 apache Spark 中的 kafka 主题读取 json 数据 Thanks 最简单的方法是使用 Spark 附带的 DataFrame 抽象 val sqlContext
  • 确保从父 CRTP 类派生的类实现功能

    Brief 我想确保派生类实现父 CRTP 类中的函数所需的成员函数 Detail 我有一些这样的代码 class Base public class Params public virtual Params virtual void my
  • 应用内计费安全

    我已经完成了在应用程序计费 v3 中使用的应用程序的开发 我的应用程序是一个考试帮助应用程序 其中包含插入数据库的问题列表 让我担心的是安全性 因为除了 proguard 之外几乎没有其他东西了 我的应用程序查询已购买商品的库存 因此存储购