Sobes.tech
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
}