Câu hỏi phỏng vấn IOS
Câu hỏi

Lập trình iOS yêu cầu bảo mật dữ liệu cá...

Câu trả lời

markdown Copy
Để bảo mật dữ liệu cá nhân trong lập trình iOS, **Keychain** được sử dụng do khả năng lưu trữ an toàn và dễ truy cập. 

**Keychain** là một mảng lưu trữ của hệ thống, giúp lưu trữ các dữ liệu nhạy cảm như mật khẩu, token theo cách mà ứng dụng khác không thể truy cập. Keychain có khả năng mã hóa nhằm bảo vệ dữ liệu ngay cả khi thiết bị bị mất cắp.

Bạn có thể lưu dữ liệu vào **Keychain** thông qua các API của **Keychain Services** có sẵn trong framework `Security`. Các dữ liệu này sẽ được mã hóa và chỉ có thể được truy cập bởi chính ứng dụng đã lưu chúng. Việc lưu và lấy dữ liệu từ **Keychain** nên được thực hiện trong Main Queue để tránh bất kỳ lỗi nào liên quan đến threading.

Dưới đây là cách sử dụng cơ bản:

```swift
import Security

// Thêm dữ liệu vào Keychain
func addItem(service: String, account: String, data: Data) -> OSStatus {
    let query: [String: Any] = [kSecClass as String: kSecClassGenericPassword,
                                kSecAttrService as String: service,
                                kSecAttrAccount as String: account,
                                kSecValueData as String: data]
    return SecItemAdd(query as CFDictionary, nil)
}

// Lấy dữ liệu từ Keychain
func getItem(service: String, account: String) -> Data? {
    let query: [String: Any] = ...
senior

senior

Gợi ý câu hỏi phỏng vấn

middle

Trong iOS, bạn xử lý bộ nhớ như thế nào để tránh retain cycle khi dùng closures?

middle

Khi lập trình iOS với SwiftUI, bạn phân biệt @State và @Binding như thế nào?

middle

Lập trình iOS có những cách nào để truyền dữ liệu giữa hai ViewControllers?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào