Junior — Middle
Ինչպե՞ս եք ապահովում գաղտնի տեղեկությունների պահպանումը:
sobes.tech AI
Պատասխան AI-ից
iOS-ում գաղտնի տեղեկատվության պահպանման անվտանգության ապահովման համար սովորաբար օգտագործվում է Keychain՝ համակարգի կողմից տրամադրված պաշտպանված պահեստ։ Keychain տվյալները կոդավորում է և սահմանափակում է դրանց հասանելիությունը, ինչը կանխում է անթույլատրելի մուտքը։
Բացի այդ, կարևոր է՝
- Չպետք է բացատեք գաղտնաբառերը և գաղտնիքները UserDefaults կամ ֆայլերում:
- Պետք է օգտագործել կոդավորումը, երբ անհրաժեշտ է պահել տվյալները خارج Keychain-ի:
- Սահմանափակել տվյալների հասանելիությունը Keychain-ի մուտքի կարգավորումներով (օրինակ՝ միայն այն ժամանակ, երբ սարքը բաց է):
Swift-ով օրինակ՝ տողը պահելու և կարդալու համար 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) // Հին գրառումը ջնջել
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
}