Junior — Middle
Hogyan biztosítod a biztonságot az érzékeny információk tárolásakor?
sobes.tech MI
Válasz az MI-től
Az iOS rendszerben biztonságosan lehet bizalmas információkat tárolni a Keychain segítségével, amely egy védett tárolóhely, amit a rendszer biztosít. A Keychain titkosítja az adatokat és korlátozza a hozzáférést, így megakadályozva az illetéktelen hozzáférést.
Ezenkívül fontos:
- Ne tároljon jelszavakat és titkokat nyílt szövegként a UserDefaultsban vagy fájlokban.
- Használjon titkosítást, ha szükséges az adatok Keychainen kívüli tárolásához.
- Korlátozza az adatokhoz való hozzáférést a Keychain hozzáférési beállításaival (például csak akkor, amikor a készülék fel van oldva).
Swift példák a sztring mentésére és olvasására a Keychain-ben:
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) // Régi bejegyzés törlése
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
}