Sar*_*ith 15 security proxy ios swift charles-proxy
至于正常的api调用,它将能够使用Charles等网络调试代理进行跟踪.
因此,加密数据和下行数据以避免相同的情况.
但是,当我检查一些应用程序时,它也隐藏了api的URL.如何在iOS中实现相同.
例:
注意:还通过在手机中添加ssl证书进行检查.它仍然没有显示.
此机制称为SSL Pinning.
理论:
什么是钉子?.
固定是一种可选机制,可用于提高依赖SSL证书的服务或站点的安全性.固定允许您指定访问您网站的用户应该接受的加密身份.
这听起来很复杂,但实际上非常简单.让我们从打破这个开始:
加密标识是一种可以通过加密技术证明服务器/主机身份的文件.SSL证书,公钥和CSR都是加密身份的示例.然后该引脚将告诉客户端记住该身份(或身份),并且仅在建立未来安全连接时接受这些身份.
因此,如果您想使用固定,您可以配置您的服务器(在某些情况下 - 考虑内部系统 - 您也可以配置客户端)并指定您想要固定的内容.浏览器和其他客户端将评估每个连接上的固定标识.如果出现任何其他身份,客户端将中止连接(这在您的情况下发生在Charles Proxy中).
想一想:SSL连接告诉客户端与任何与该主机匹配的身份进行加密连接.固定会告诉客户端在建立安全连接时应该接受的特定身份.
因此,例如,如果我们的网站是example.com,我们可以固定身份.当用户访问我们的网站时,他们会收到固定信息.在将来的访问中,如果我们试图让客户端使用不同的身份,他们的浏览器将采取行动.
实践:
SSL固定服务器证书的主键将保存在应用程序包中.然后,当客户端从服务器接收证书时,它会比较2个证书,以确保它们在建立连接之前是相同的.
该Alamofire HTTP网络库中有SSL钉扎,很容易使用内置函数:
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)
)
Run Code Online (Sandbox Code Playgroud)
你可以阅读更多在这里和这里有关如何在您的应用程序迅速实现SSL钢钉.
| 归档时间: |
|
| 查看次数: |
511 次 |
| 最近记录: |