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
}