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
}