在 iOS 应用程序包中保护登录凭据

Posted

技术标签:

【中文标题】在 iOS 应用程序包中保护登录凭据【英文标题】:Securing login credentials in an iOS app bundle 【发布时间】:2019-10-29 06:40:11 【问题描述】:

我正在编写一个 ios 应用程序并且有一个难题。该应用程序将用于测试我们生产线下线设备的 BLE 协议。它需要非常简单,它是一个一键式应用程序,可以自动连接到设备并测试我们协议中的命令并给出通过或失败的结果。如果它通过了,设备 id 将被发送到我们的 API 以输入到我们的数据库中。

我的问题是我不希望用户必须登录,但我需要向 API 发送用户名和密码才能登录。这意味着用户名和密码必须包含在应用程序中。我正在尝试找出最安全的方法来做到这一点。我最初以为我会在应用程序中包含一个带有凭据的 plist,将它们输入到钥匙串中,然后删除 plist。但是我不相信您可以删除应用程序包中包含的文件(我收到 513 权限错误)。

我有 2 个问题。在代码中包含凭据是否安全?有没有更好的方法来做到这一点?

谢谢!

【问题讨论】:

【参考方案1】:
    没有。 使用 API 检索凭据并存储到钥匙串。简单地调用 firebase 就可以解决这个问题。或者使用您自己的后端和您的自定义“安全性”。

但即使通过 API 获取也不能给您 100% 的安全性。一切都取决于。 API 解决方案为您提供了支持具有不同凭据的不同版本的灵活性和能力。

【讨论】:

感谢您的回答。我想我将提供一个一次性登录页面,并在成功登录后将凭据保存到钥匙串。管理员可以在设备进入工厂车间之前登录,然后车间工人永远不必登录。我必须使用我们的 API 登录,我不清楚如何从我们的 API 检索凭据并仍然安全地提供应用程序包中的凭据来执行此操作。如果我很快没有收到更好的答案,我会将其标记为正确。

以上是关于在 iOS 应用程序包中保护登录凭据的主要内容,如果未能解决你的问题,请参考以下文章

iPhone / iOS Facebook SDK - 您可以在应用内登录并保留登录凭据吗?

当用户退出我的 iOS 应用程序时,下次他们尝试使用 Facebook 登录时,他们应该必须重新输入他们的登录凭据

laravel - 在登录移动应用程序时保存会话凭据

在 iOS 应用中处理多个 Facebook 用户登录

Grails OAuth2 登录密码凭据授予返回 invalid_client

如何使用oAuth2“资源所有者凭据授予”IOS APP?