【问题标题】:How protect an API key? [duplicate]如何保护 API 密钥? [复制]
【发布时间】:2018-06-30 09:44:57
【问题描述】:

我正在开发有 api(restful)的项目

我在resful中使用key并在app中使用

但是如果有人可以反编译我的应用程序并查看 api 密钥,那么可以破解我的 api

有没有办法保护 api 密钥或使用 api 密钥而不存储在应用程序中?

【问题讨论】:

标签: android rest api


【解决方案1】:

通常,Google 将密钥存储到 Android Manifest 或 string.xml(res 文件)中。这两个文件可以像任何其他文件一样被反编译。我认为KeyStore 通常是存储私钥的好习惯,所以请看一下 KeyStore 类以及如何使用它。

你也可以在github上找到关于这个主题的不错的文章

【讨论】:

  • 谢谢,我使用来自私有签名密钥的哈希来加密数据并发送到 api,这是个好方法吗?
  • 对不起,如果我没有理解你的意思,你散列你的私钥然后将它发送到服务器?在那种情况下,为什么有很多连击解决方案:) 顺便说一句,使用 https 总是很好的想法。
  • No 不,我使用私有签名密钥 sha1 或 md5 作为 api 密钥,这是不好的方法吗?我认为如果我使用符号哈希,黑客就无法破解它:)))
  • 不,没关系,只要您为所使用的算法使用令人满意的密钥长度。只是可能使用 sha1,因为不推荐使用 md5 :) 而且我再次建议您设置 https,有免费的让我们加密 https 提供程序 :) 如果您只将数据从手机发送到服务器,您也可以使用 RSA。在这种情况下,您将使用服务器的公钥加密并使用服务器的私钥解密。
【解决方案2】:

您无法完全保护嵌入在应用中的静态 API 密钥。逆向工程工具可以很容易地提取它,但你可以让生活变得更加困难,这将是在你的 API 数据的价值、你想要花费多少时间/精力来保护它以及攻击者的动机之间进行权衡。

密钥库可用于保护动态会话密钥,但不能用于保护静态 API 密钥,并且在许多低端设备上没有硬件支持,因此请检查您的客户群。

!以下与商业产品有关!

除了之前链接的示例之外,还可以在此处找到一些密钥和 API 保护示例。

https://github.com/approov

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-12
    • 2020-04-11
    • 1970-01-01
    • 2018-07-17
    • 2023-03-02
    • 2016-03-04
    • 2012-07-13
    • 2020-10-31
    相关资源
    最近更新 更多