Sobes.tech
Junior — Middle

Kako obezbeđujete sigurnost prilikom čuvanja poverljivih informacija?

sobes.tech АИ

Одговор од АИ

За обезбедјивање безбедности приликом складиштења поверљивих информација у iOS-у, обично се користи Keychain — заштићено складиштење које пружа систем. Keychain шифрује податке и ограничава приступ њима, што спречава неовлашћени приступ.

Поред тога, важно је:

  • Не чувати лозинке и тајне у јасном тексту у UserDefaults или датотекама.
  • Користити шифровање када је потребно за складиштење података изван Keychain-а.
  • Ограничити приступ подацима помоћу подешавања приступа Keychain-у (на пример, приступ само када је уређај откључан).

Пример чувања и читања низа у Keychain-у помоћу Swift:

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
}