Sobes.tech
Назад к вопросам
Junior — Middle
76

Каким образом обеспечиваешь безопасность при хранении конфиденциальной информации?

Компании, где спрашивали
Альфа-БанкАльфа-Банк

Ответ от нейросети

sobes.tech AI

Для обеспечения безопасности при хранении конфиденциальной информации в iOS обычно используют Keychain — защищённое хранилище, предоставляемое системой. Keychain шифрует данные и ограничивает доступ к ним, что предотвращает несанкционированный доступ.

Кроме того, важно:

  • Не хранить пароли и секреты в открытом виде в UserDefaults или файлах.
  • Использовать шифрование при необходимости хранения данных вне Keychain.
  • Ограничивать доступ к данным с помощью настроек доступа Keychain (например, доступ только при разблокированном устройстве).

Пример записи и чтения строки в Keychain с помощью Swift:

import Security

func saveToKeychain(value: String, forKey key: String) {
    let data = value.data(using: .utf8)!
    let query: [String: Any] = [
        kSecClass as String: kSecClassGenericPassword,
        kSecAttrAccount as String: key,
        kSecValueData as String: data
    ]
    SecItemDelete(query as CFDictionary) // Удаляем старую запись
    SecItemAdd(query as CFDictionary, nil)
}

func loadFromKeychain(key: String) -> String? {
    let query: [String: Any] = [
        kSecClass as String: kSecClassGenericPassword,
        kSecAttrAccount as String: key,
        kSecReturnData as String: true,
        kSecMatchLimit as String: kSecMatchLimitOne
    ]
    var dataTypeRef: AnyObject? = nil
    let status = SecItemCopyMatching(query as CFDictionary, &dataTypeRef)
    if status == errSecSuccess, let data = dataTypeRef as? Data {
        return String(data: data, encoding: .utf8)
    }
    return nil
}