Back to questions
МТС
Junior — Middle
75
Упоминали ли вы использование SSL Pinning в своих проектах?
Companies where asked
Answer from AI
sobes.tech AI
Да, в некоторых проектах я использовал SSL Pinning для повышения безопасности сетевого взаимодействия. SSL Pinning — это техника, при которой приложение хранит конкретный сертификат сервера или публичный ключ и проверяет его при установлении HTTPS-соединения, чтобы предотвратить атаки типа "man-in-the-middle".
На практике это означает, что даже если злоумышленник подменит сертификат, приложение не примет соединение, так как сертификат не совпадает с закреплённым.
Пример использования SSL Pinning в iOS с URLSession:
let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil)
// Реализуем делегат URLSessionDelegate
func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge,
completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
if let serverTrust = challenge.protectionSpace.serverTrust,
SecTrustEvaluateWithError(serverTrust, nil) {
// Получаем сертификат сервера
let serverCertificate = SecTrustGetCertificateAtIndex(serverTrust, 0)
// Сравниваем с локально сохранённым сертификатом
// Если совпадает, разрешаем соединение
// Иначе отклоняем
} else {
completionHandler(.cancelAuthenticationChallenge, nil)
}
}
Таким образом, SSL Pinning помогает защитить приложение от подмены сертификатов и повысить безопасность передачи данных.