Sobes.tech
Junior — Middle

Come garantisci la sicurezza durante la conservazione delle informazioni riservate?

sobes.tech AI

Risposta dell'AI

Per garantire la sicurezza durante la memorizzazione di informazioni riservate su iOS, si utilizza generalmente il Keychain, un archivio protetto fornito dal sistema. Il Keychain cifra i dati e limita l'accesso ad essi, prevenendo accessi non autorizzati.

Inoltre, è importante:

  • Non memorizzare password e segreti in chiaro in UserDefaults o file.
  • Utilizzare la crittografia quando necessario per memorizzare dati al di fuori del Keychain.
  • Limitare l'accesso ai dati tramite le impostazioni di accesso del Keychain (ad esempio, accesso solo quando il dispositivo è sbloccato).

Esempio di salvataggio e lettura di una stringa nel Keychain usando 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) // Elimina la vecchia voce
    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
}