Junior — Middle
Kā nodrošināt drošību, uzglabājot konfidenciālu informāciju?
sobes.tech AI
Atbilde no AI
Lai nodrošinātu drošību, glabājot konfidenciālu informāciju iOS, parasti tiek izmantots Keychain — aizsargāta glabātuve, ko nodrošina sistēma. Keychain šifrē datus un ierobežo piekļuvi tiem, novēršot neatļautu piekļuvi.
Turklāt ir svarīgi:
- Neglabājiet paroles un slepenos datus atklātā tekstā UserDefaults vai failos.
- Ja nepieciešams, izmantojiet šifrēšanu, glabājot datus ārpus Keychain.
- Ierobežojiet piekļuvi datiem, izmantojot Keychain piekļuves iestatījumus (piemēram, piekļuve tikai tad, kad ierīce ir atbloķēta).
Swift piemērs, kā saglabāt un nolasīt virkni Keychain:
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) // Dzēst veco ierakstu
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
}