Sobes.tech
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 помогает защитить приложение от подмены сертификатов и повысить безопасность передачи данных.