Junior — Middle
Kuidas tagate konfidentsiaalse teabe säilitamisel turvalisuse?
sobes.tech AI
Vastus AI-lt
Selleks, et iOS-is konfidentsiaalse teabe turvaliselt salvestada, kasutatakse tavaliselt Keychain'i — süsteemi pakutavat kaitstud salvestusruumi. Keychain krüpteerib andmed ja piirab juurdepääsu neile, mis takistab volitamata juurdepääsu.
Lisaks on oluline:
- Ära salvesta paroole ja saladusi avalikult UserDefaults või failides.
- Kasuta krüpteerimist andmete salvestamisel väljaspool Keychain'i, kui see on vajalik.
- Piira juurdepääsu andmetele Keychain'i juurdepääsuse seadistustega (näiteks juurdepääs ainult siis, kui seade on lukustatud).
Näide stringi salvestamisest ja lugemisest Keychain'ist Swift'i abil:
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) // Eemaldame vana kirje
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
}