Table of Contents
iOS এর মধ্যে নিরাপদ ডাটা স্টোরেজ পরিচিতি
সংবেদনশীল ব্যবহারকারী তথ্য নিরাপদ রাখা একটি মৌলিক দায়িত্ব। যে কোনো আইওএস অ্যাপ্লিকেশনের একটি প্রধান দায়িত্ব। যে কোনো ধরনের নিরাপত্তা ব্যবস্থা, এনক্রিপশন কী, অথবা ব্যক্তিগত পরিচয় প্রমাণপত্র সংরক্ষণ করা হয় না, অথবা প্ল্যাটফর্ম একটি বিশেষ করে আপনার জন্য উপলব্ধ হার্ডওয়্যার- ডি. এন. পি. কী- এস. কী (LODO) সরবরাহ করা প্রয়োজন বোধ করে, তা নির্ধারণের ক্ষেত্রে প্রযোজ্য । উদাহরণ: [FROD] [F] [F]] [FO:: [F]] এর পরিবর্তে prop [F], কিচার্ড ডাটা এবং নিরাপত্তা সংক্রান্ত তথ্য ডি. পি. এস. পি. পি. পি. আই. ডি. আই. ডি. - এর সাথে উপলব্ধ করা হয় ।
IOS কিঞ্চিন বুঝতে
অপারেটিং সিস্টেমের মধ্যে উপলব্ধ কি-রিং একটি নিরাপদ কনটেইনারটি সংরক্ষিত করে । এর সাহায্যে প্রধান স্টোরের মধ্যে কিছু ক্ষুদ্র, সংবেদনশীল সামগ্রী, কি-র সাহায্যে এনক্রিপ্ট করা হয় ও সার্টিফিকেটের মধ্যে এই কি-টি নিরাপদ রাখা হয়েছে। পরিচয় পংক্তিতে ডি-ক্রিপ্টের পাসওয়ার্ড লেখার সময় (key) লেখা তথ্য লেখা হয়েছে। যে তথ্য লেখার সময়, কি-রিং লক করা হবে।
- [[F] বিশ্রামে প্রবেশ করা হচ্ছে [FLT] - এ- আই-এস-২৫৬ ব্যবহার করে এনক্রিপ্ট করা হবে।
- [[[F] LAN[FLT][FLT][FLT][FLT] ডিভাইস পাস কোড, টাচ ID বা ফেস আই.ডি.
- [[F] অ্যাপ্লিকেশনের মধ্যে উপলব্ধ PROPERN [FOP][FLT][FLT] [FLT] ও ঐচ্ছিক আই.ডি.এম.এল. সুসংগতির সাথে সুসংগত করা হয়েছে
- [[F][FLT][FLT][FLT][FLT]: ডিফল্ট হিসেবে একটি অ্যাপ্লিকেশনকে অন্য একটি অ্যাপ্লিকেশন দ্বারা বিভক্ত করা যাবে না যদি না তারা গ্রুপতে কোন কীচাইন ব্যবহার করে ।
বড় বড় multiblash এর জন্য কী ডিজাইন করা হয়নি; প্রতিটি বস্তুর জন্য কিছু অংশ অল্প কিছু কালের জন্য রাখা হয় । বড় আকারে [FLT] বা [FLT:] ফাইল [FOR] - ভিত্তিক এনক্রিপশনের সাথে একই কাঠামো ব্যবহার করুন ।
কিচাইন সার্ভিস API vPers 3-প্ল্যাটলি লিপার
Apple [FLT] স্থানীয় [F] [F] [F][F][F][F][F],[FOPL]], What [FDOP], [FOD] এর মাধ্যমে নির্মিত হবে। সাধারণ বৈশিষ্ট্যের সাথে প্রদর্শিত সর্বোত্তম মান হল: [F] /FOPRED [F] [F] [F] সাধারণত একটি সাধারণ মানের জন্য সুনির্দিষ্ট মান নির্ধারণ করা হয়। উল্লেখ্য: [F]] /Fp [FW [Ctrl+F]: /F] [F]
কী সেট আপসেট
কিছু সংরক্ষণ করার পূর্বে, আপনাকে অবশ্যই[[F][F] - > বস্তুর মধ্যে নির্ধারণ করতে হবে । সাধারণ পাসওয়ার্ড [FLT] এর জন্য সাধারণ পাসওয়ার্ড [FLT] । অন্য কোনো শ্রেণীর জন্য অন্যান্য বৈশিষ্ট্য রয়েছে - এই বৈশিষ্ট্যের উল্লেখকৃত (RD) ।
মূল প্রবাহ সবসময় এই বিষয়ের অনুসরণ করে:
- বৈশিষ্ট্য সম্পাদন ও বৈশিষ্ট্যের জন্য একটি অনুসন্ধান অভিধান নির্মাণ করুন।
- উপযুক্ত[F][F] ফাংশন [[F], [F], [FO],[FO],[FLT], [FO[F], [F],[[[F]]]]] [[/]]
- ফিরে আসার পর[[FLT] পরীক্ষা করো [[[[[[F][F] অথবা ত্রুটির কোড] ।
কোড লেখার পূর্বে, নিরাপত্তা মডিউল ইম্পোর্ট করা হবে:
import Security
import Foundation // for Data and String utilities
কি-রিং এ তথ্য সংরক্ষণ করা হচ্ছে
সাধারণ পাসওয়ার্ড লেখা হচ্ছে
এ্যান টি আই এম (যেমন, এটি একটি জেডাব্লিউটি) ব্যবহারকারীর জন্য:
func saveToken(_ token: String, forAccount account: String) -> Bool {
guard let tokenData = token.data(using: .utf8) else { return false }
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: account,
kSecValueData as String: tokenData,
// Optional: restrict access to when device is unlocked
kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly
]
// Delete any existing item first to avoid duplicates
SecItemDelete(query as CFDictionary)
let status = SecItemAdd(query as CFDictionary, nil)
return status == errSecSuccess
}
কী-এর দিক:
- [[[[F] প্রধান কী এর একটি বৈশিষ্ট্য হিসেবে কাজ করো; একটি অনন্য কী (উদাহরণ, ব্যবহারকারীর পরিচয়, বা ধ্রুবক [FO] এর মত একটি নিয়মিত ক্রিয়া (eFOPL]. [FO:]
- [[[[F] আইটেম পড়ার সময় নিয়ন্ত্রণ করা হবে । সেরা নিরাপত্তার জন্য [FLT] ব্যবহার করুন; এটি আই. সি.ডি. - এর ব্যাকআপ ব্যাকআপ ব্যাক- আপ ব্যাকআপ এবং বর্তমান ডিভাইসের প্রবেশাধিকার সীমাবদ্ধ করে ।
- আমরা [[[[[[F]] অনুরূপ বস্তু সংগ্রহ না করার আগে] আপনি [FODO: 19: 19] [FO] ব্যবহার করতে পারেন ।
প্রবেশ নিয়ন্ত্রণ (Biometris বা acifice)
অত্যন্ত সংবেদনশীল তথ্য লেখার পূর্বে সংশ্লিষ্ট ID অথবা ফেস-ব্রাউজার ID আবশ্যক:
let accessControl = SecAccessControlCreateWithFlags(
nil,
kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
.userPresence, // requires passcode, Face ID, or Touch ID
nil
)
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: account,
kSecValueData as String: tokenData,
kSecAttrAccessControl as String: accessControl as Any
]
SecItemAdd(query as CFDictionary, nil)
বর্তমানে [[[[[F]] এই বস্তুর জন্য [FODO :2] বায়োমেট্রিক অথবা পাস কোড প্রম্পট প্রম্পটের জন্য একটি বায়োমেট্রিক সংখ্যা । স্থানীয় অনুমোদন দ্বারা প্রয়োজন বোধ করো ব্যবহারকারী সঙ্গে সঙ্গে যোগাযোগ করতে ।
কি-রিং থেকে তথ্য প্রাপ্ত করা হচ্ছে
সংরক্ষিত টোকেন পড়তে:
func retrieveToken(forAccount account: String) -> String? {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: account,
kSecReturnData as String: true,
kSecMatchLimit as String: kSecMatchLimitOne
]
var item: CFTypeRef?
let status = SecItemCopyMatching(query as CFDictionary, &item)
guard status == errSecSuccess,
let data = item as? Data,
let token = String(data: data, encoding: .utf8) else {
return nil
}
return token
}
[[[[F][FLT] - এ তথ্য [F] [[[F]] পরবর্তী: [FLT]] [FLTR] [FOPR] [FO [F8:] [FOPL]] [FR] কলটি ফেরত দিতে পারে যদি ব্যবহারকারী বাতিল করে এবং পৃথক বার্তা পাঠ না করে । মুছে ফেলার পরিবর্তে, [F]: [F] এটা মুছে ফেলার চেয়ে বেশী কার্যকর এবং এটি সম্ভাব্য বর্ণগত পরিস্থিতি এড়াতে পারে। অন্যান্য অ্যাপার মিল না রাখার ব্যাপারে সতর্ক থাকুন; সাধারণত: [FLT] ব্যবহার করে আপনার অনুসন্ধানের পরিধি প্রথমাংশে [F] যদি আপনি কীচাসিন ব্যবহার করেন তাহলে আপনার সমস্ত বস্তু মুছে ফেলো [[[[[F]] নিয়মিত সংজ্ঞায়িত করো [FO] [FR][F][F]][F]] যে সমস্ত কোড পড়া যাবে তা বেছে নিন: সব কিছু এখনো আপনার অ্যাপ্লিকেশনের প্রয়োজনের সঙ্গে পরিচিত । অধিকাংশ টুল-টিপের জন্য [[FFLT] [FP]
[[[F]] ফাংশন [F] [FLT] - এর একটি ফাংশন প্রতি ফিরিয়ে নিয়ে আসে [FLT].[F] সবসময় পরীক্ষা করুন এবং সবসময় এটি সংশোধন করে.p. সাধারণ সমস্যা: sner-sonment- siteed-র অবস্থা কখনো উপেক্ষা করা হবে না। বাগ-রিপোর্টটি ভুল অথবা পুনরায় চেষ্টা করতে ত্রুটির ফলে কিচী সংক্রান্ত তথ্য প্রদর্শন করা হবে। উদাহরণ: /FODatin [FLT] ব্যবহার করার পূর্বে আপনি "Fit-র্ট্রোমেট্রিকতা পরীক্ষা করতে পারবেন । আধুনিক অ্যাপস এর জন্য অভিনেতা বা এনএল-এফ-এর সাথে যুক্ত কিচান-এর কার্যক্রম প্রধান থ্রেডগুলি বন্ধ করার জন্য । উদাহরণ: [FODO:] আপনি যদি বায়োমেট্রিক্স ব্যবহার করেন, [FLT:] ব্যবহারকারীদের যোগাযোগ করার সময় ব্লক রাখা যেতে পারে । এটি একটি ব্যাক- এন্ডের মধ্যে আবির্ভূত হতে পারে । এটি ব্যবহার করতে [FDO] [FOD] [Fgt:] CV: 30: 30:: 30.600::: The iOS Keychain is the correct place to store small, sensitive pieces of data. By using the native Keychain Services API, you gain direct control over encryption, accessibility, and authentication policies. Always pair your Keychain usage with solid error handling and remember to clear data when appropriate. For further reading, refer to the Apple Keychain Service Documentation and the Keychain Concepts overview. Adopting these practices will help you ship iOS apps that respect user privacy and withstand security scrutiny. কি-রিং অবজেক্ট মুছে ফেলা হচ্ছে
উপস্থিত বস্তু আপডেট করা হচ্ছে
func updateToken(_ newToken: String, forAccount account: String) -> Bool {
guard let newData = newToken.data(using: .utf8) else { return false }
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: account
]
let attributesToUpdate: [String: Any] = [
kSecValueData as String: newData
]
let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
return status == errSecSuccess
} একটি বস্তু মুছে ফেলা হচ্ছে
func deleteItem(forAccount account: String) -> Bool {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: account
]
let status = SecItemDelete(query as CFDictionary)
return status == errSecSuccess
} অাপনার কন্ট্রোল এবং বিশেষ ব্যবহারের বৈশিষ্ট্য
Attribute Meaning kSecAttrAccessibleWhenUnlockedAvailable only while device is unlocked (default). kSecAttrAccessibleAfterFirstUnlockAvailable after device boots and is unlocked once. Allows background access. kSecAttrAccessibleWhenPasscodeSetThisDeviceOnlyRequires a passcode to be set. Strictest option—prevents access even after unlock if passcode is removed. kSecAttrAccessibleWhenUnlockedThisDeviceOnlySame as WhenUnlocked but does not back up to iCloud, and cannot be restored to another device. ত্রুটি ও কমন পিটসিং
সর্বোত্তম অভ্যাস ও উৎপাদন পদ্ধতি
quit এবং cre-কি ব্যবহার
actor KeychainManager {
func saveToken(_ token: String, for account: String) async -> Bool {
// same implementation as above, but now it's safe to call from any context
return saveToken(token, forAccount: account)
}
} অন্তর্ভুক্ত