Sobes.tech
Junior — Middle

Hogyan biztosítod a biztonságot az érzékeny információk tárolásakor?

sobes.tech MI

Válasz az MI-től

Az iOS rendszerben biztonságosan lehet bizalmas információkat tárolni a Keychain segítségével, amely egy védett tárolóhely, amit a rendszer biztosít. A Keychain titkosítja az adatokat és korlátozza a hozzáférést, így megakadályozva az illetéktelen hozzáférést.

Ezenkívül fontos:

  • Ne tároljon jelszavakat és titkokat nyílt szövegként a UserDefaultsban vagy fájlokban.
  • Használjon titkosítást, ha szükséges az adatok Keychainen kívüli tárolásához.
  • Korlátozza az adatokhoz való hozzáférést a Keychain hozzáférési beállításaival (például csak akkor, amikor a készülék fel van oldva).

Swift példák a sztring mentésére és olvasására a Keychain-ben:

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) // Régi bejegyzés törlése
    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
}