【问题标题】:How to provide highlevel API call Security - iOS如何提供高级 API 调用安全性 - iOS
【发布时间】:2019-02-25 13:04:51
【问题描述】:

对于普通的api调用,它将能够使用Charles等网络调试代理进行跟踪。

所以上行数据和下行数据被加密以避免相同。

但是当我检查一些应用程序时,它也会隐藏 api 的 url。如何在 iOS 中实现同样的效果。

例子:

注意:还通过在我的手机中添加 ssl 证书进行检查。还是没有显示出来。

【问题讨论】:

    标签: ios swift security proxy charles-proxy


    【解决方案1】:

    这种机制称为 SSL Pinning

    理论:

    什么是固定? .

    固定是一种可选机制,可用于改进 依赖 SSL 证书的服务或站点的安全性。固定 允许您指定应接受的加密身份 访问您网站的用户。

    这听起来很复杂,但实际上很简单。让我们从 分解:

    加密身份是可以证明一个身份的文件 服务器/主机通过密码学。 SSL 证书、公钥、 和 CSR 都是加密身份的示例。那个别针会 然后告诉客户记住该身份(或身份)和 仅在建立未来的安全连接时接受那些。

    所以,如果你想使用 pinning,你需要配置你的服务器(在 在某些情况下——想想内部系统——你也可以配置 客户)并指定您想要固定的内容。浏览器及其他 客户端将评估每个连接上的固定身份。如果有的话 提供了其他身份,客户端将中止连接 (这发生在您使用 Charles Proxy 的案例中)。

    从大局出发:SSL 连接告诉客户端创建一个 与该主机匹配的任何身份的加密连接。固定 告诉客户他们在制作时应该接受的特定身份 安全连接。

    因此,例如,如果我们的网站是 example.com,我们可以固定身份。 当用户访问我们的网站时,他们会收到固定的 信息。在以后的访问中,他们的浏览器会采取行动,如果我们 试图让客户端使用不同的身份。

    练习:

    SSL 固定该服务器证书的主密钥将保存在应用程序包中。然后,当客户端从服务器接收到证书时,它会在建立连接之前比较两个证书以确保它们相同。

    Alamofire HTTP 网络库具有内置的 SSL pinning 功能,非常易于使用:

    let pathToCert = Bundle.main.path(forResource: "name-of-cert-file", ofType: "cer")
    let localCertificate: NSData = NSData(contentsOfFile: pathToCert!)!
    
    let serverTrustPolicy = ServerTrustPolicy.pinCertificates(
        certificates: [SecCertificateCreateWithData(nil, localCertificate)!],
        validateCertificateChain: true,
        validateHost: true
    )
    
    let serverTrustPolicies = [
        "my-server.com": serverTrustPolicy
    ]
    
    let sessionManager = SessionManager(
        serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
    )
    

    您可以阅读更多 herehere 了解如何在您的 swift 应用中实现 SSL Pinning。

    【讨论】:

    • 如果我们更改证书怎么办?我们需要再次上传应用程序。我需要它完全是动态的。怎么样?
    • @UdayKumarEega 是的,需要重新上传应用程序,在新的更新之前应用程序将无法正常运行。
    • 或者您可以添加从服务器下载的功能。我不知道这是否正确,但由于同样的问题,我在我的一个应用程序中实现了
    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2021-07-30
    相关资源
    最近更新 更多