ios - 使用 Alamofire 进行 Ssl 固定不会阻止其他域中的请求
问题描述
我正在开发一个使用Alamofire
. 我正在尝试实现 ssl pinning。我已经在我的应用程序中捆绑了 der 文件。这是我的代码
class ApiSessionnManager{
static let shared = ApiSessionnManager()
var afmanager:SessionManager
init(){
let domain = "herokuap.com"
let githubCert = "herokuapp" // Dev ssl cert and Prod ssl cert ****
let pathToCert = Bundle.main.path(forResource: githubCert, ofType: "der")
let localCertificate: Data = try! Data(contentsOf: URL(fileURLWithPath: pathToCert!))
let localCertificateCfData: CFData = localCertificate as CFData
let secCert = SecCertificateCreateWithData(nil, localCertificateCfData)!
let serverTrustPolicy = ServerTrustPolicy.pinCertificates(certificates: [secCert], validateCertificateChain: true, validateHost: true)
let serverTrustPolicies = [
domain: serverTrustPolicy
]
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = SessionManager.defaultHTTPHeaders
self.afmanager = SessionManager(configuration: configuration,serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies))
}
}
在我的 Viewcontroller 类中,我有
func signIn() {
let parameters: [String: AnyObject] = [
"id" : "user" as AnyObject,
"password" : "pass" as AnyObject
]
ApiSessionnManager.shared.afmanager.request("https://floating-stream-25740.herokuapp.com/authentication/login", method: .post, parameters: parameters, encoding: JSONEncoding.default)
.responseJSON { response in
print(response)
}
我得到了成功的回应。但问题是即使我更改了域,我仍然得到成功响应。SSL 不会阻止来自其他域的请求。任何帮助将不胜感激。
解决方案
推荐阅读
- c++ - C++ - 从 ptime 计算毫秒的总秒数
- google-sheets - 查询及其总行
- javascript - 对于(me_labba 的键){} 不起作用
- spacy-3 - 在 spaCy 3.0 中使用 spaCy 微调 NER 模型
- java - 在我的 Java 移动应用程序中使用图形数据库
- java - 在应用程序被杀死并重新启动后,Android 应用程序黑暗主题消失了
- angular - 在 1636 个扫描包中发现 46 个漏洞(42 个中度,4 个高)运行 `npm audit fix` 修复其中 2 个
- javascript - 错误:收集方法聚合是同步的
- python - 删除一个列表中的重复项目并在第二个列表中添加具有相同索引位置的项目
- android - 自动发布 Android 和 iOS 应用以测试设备