【问题标题】:Android Oauth storing client credentialsAndroid Oauth 存储客户端凭据
【发布时间】:2015-01-08 06:10:45
【问题描述】:

在测试/编写我的应用程序时,我已将我的 Oauth 凭据硬编码到我的代码中(用户名、密码、客户端密码和客户端 ID)。如何以安全的方式混淆或存储这些值?如果有人要反编译(de-dex?这是一件事吗?)我的 APK 他们看不到我的凭据吗?

谢谢!

【问题讨论】:

  • 您不能在 APK 中以可以提取(通过程序)和无法提取(通过窥视)的方式将密码嵌入 APK。更有趣的问题是:你为什么要这样做?
  • 我正在使用 oauth 从我的 php 服务器同步数据。我从来没有让用户通过 oauth 流程,因为同步是在后台处理的。他们从不输入凭据,因此必须将其保存在某个地方。
  • 很抱歉,这完全没有意义。同步发生在后台与用户未通过身份验证/授权步骤有关的事实如何?如果您在 APK 中嵌入了一个固定的、不依赖于用户的密码,那么您的服务器及其保存的数据是完全开放的。作为优化,请考虑删除 OAuth 层。这当然不会降低安全性。
  • 我不明白你的意思。我当然想要 oauth,因为它可以防止未经授权的人访问我的 API。我确实遵循 oauth 流程,但它发生在后台,不会强制用户使用网站表单登录。我正在使用密码授予身份验证类型,并发送 client_id、client_secret、用户名/电子邮件和密码来请求令牌。获得令牌后,我将令牌与每个 API 调用一起发送。如果我在没有令牌的情况下进行 API 调用,页面会显示拒绝访问。我在问如何在 APK 中安全地包含 client_id、client_secret、用户名、密码
  • 我再说一遍:您不能在 APK 中安全地包含密码。每个人都可以拿走。使用具有固定用户 ID 和密码的 OAuth 不会提供任何安全性。

标签: android security oauth oauth-2.0


【解决方案1】:

您可以将凭证字符串分成小块并将它们散布在整个应用程序中,然后编写代码以稍后将它们重构为您需要的原始值。但是,虽然您可以使某人难以发现您以这种方式存储的凭据,但我不相信您可以使某人无法这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2014-05-04
    相关资源
    最近更新 更多