Junior — Middle
Como garante a segurança ao armazenar informações confidenciais?
sobes.tech IA
Resposta da IA
Para garantir a segurança ao armazenar informações confidenciais no iOS, geralmente utiliza-se o Keychain, um armazenamento protegido fornecido pelo sistema. O Keychain cifra os dados e limita o acesso a eles, prevenindo acessos não autorizados.
Além disso, é importante:
- Não armazenar senhas e segredos em texto aberto no UserDefaults ou em ficheiros.
- Utilizar encriptação quando necessário armazenar dados fora do Keychain.
- Restringir o acesso aos dados através das configurações de acesso do Keychain (por exemplo, acesso apenas quando o dispositivo está desbloqueado).
Exemplo de gravação e leitura de uma string no 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) // Remove entrada antiga
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
}