【问题标题】:How to secure an authentication in swift [closed]如何快速保护身份验证[关闭]
【发布时间】:2017-08-15 10:18:36
【问题描述】:

我对 iOS 应用程序编程非常陌生。我对为应用程序创建登录进行了更深入的研究。该程序对我来说很清楚,但我对安全方面有一些担忧。

A) 应用程序正在将用户提供的凭据发送到可以用 php 编写的 API。然后,此 API 将验证凭据并将响应发送回应用程序。然而,这不是一个大的安全问题吗?是不是可以为每个拥有 API 地址的人验证一些凭据?

B) 其次,我还没有看到在将应用程序中的凭据发送到 api 之前正确加密凭据的教程。如果他们进行加密,他们会让 API 完成这项工作。在应用程序中加密它们并将加密的凭据发送到 API 的正确方法是什么?我需要在我的应用中存储密钥吗?

我问这个是因为我想从一开始就以正确的方式去做。谢谢。

【问题讨论】:

    标签: php ios swift security encryption


    【解决方案1】:

    首先,我首先要确保您的服务器已准备好SSLipv6 功能。 (照顾好蝙蝠的这些权利,防止您的应用在进入 App Review 时被拒绝)

    在保护您的 api 路由方面,您可以查看JWT token。 JWT 与密码或证书一起使用(意味着私钥和公钥,请考虑何时要在没有密码的情况下通过 ssh 连接到服务器)。

    我更喜欢使用证书,但是您需要确保不会丢失这些证书,因为一旦您的应用准备好销售,只有这些特定证书才能让您的应用与该 API 通信。

    一旦你的 api 的所有路由都得到保护,我会:

    • 生成默认令牌并将其存储到您应用的钥匙串中(其目的是只允许您访问您的 api 一次)

    • 从 api 端,创建一个路由 (/generate_token),它将读取该默认令牌,如果有效,您生成一个新令牌并将其作为响应发送。

    • 从钥匙串中删除该默认令牌并将该新令牌存储在那里。

    当您的 iOS 应用首次启动时,您可以将某种 isAlreadyFetchedToken = false 变量保存到您的 UserDefault 中。此变量允许您跟踪是否有新令牌。

    if isAlreadyFetchedToken == false {
        // load the default token into some variable 
        let default_token = ...
       // create custom http header 
       let header = ["Authorization": "Bearer \(default_token)" ]
       // access your /generate_token route from your api 
        // if you get a response it should contain a new_token 
        // save new token into keychain && remove default one 
      // update userDefault var to true 
         isAlreadyFetchedToken = true 
    }
    

    现在,每次您想访问您的 api 时,您都会从钥匙串中加载该令牌,并将其传递到您的 api 路由的Authorization header,例如[Authorization: "Bearer" + new_token]

    这是一种方式,不是唯一的方式

    【讨论】:

      【解决方案2】:

      API应该允许来自任何人和任何地方的请求。如果您的 API 允许来自任何地方的请求并且仍然安全,那么它设计得很好。如果您的 API 仅在与特定客户端软件通信时是安全的,那么您的 API 设计不佳。

      解决方案很简单。使用 TLS,并实施一个体面的身份验证系统。 JWT 令牌是一个好的开始。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-01
        • 2018-04-30
        • 1970-01-01
        • 2014-11-20
        • 2021-05-31
        • 1970-01-01
        相关资源
        最近更新 更多