Just a Computer Graphics Studio & My Life

[iOS] 將密碼儲存於KeyChain

為了安全地儲存使用者的密碼,建議將密碼儲存於KeyChain中。哈~要不是資深工程師提點,不然我真的還是會儲存在User Defaults中呢!

Keychain

KeyChain是iOS提供的一種安全保存私密資料的方式,整個系統的keychain被保存在隱秘的位置(/private/var/Keychains/keychain-2.db),其中保存的資料是經過加密的。

KeyChain優點:

  • 每個組( keychain-access-groups )之間資料存取隔離,沒有權限的app無法讀取他人資料,保證資料的安全
  • 全域性統一儲存,即使刪除app,keychain中的資料依然存在,下次重新安裝app還能存取
  • 存儲後的資料會加密
  • 同一個組的app可以共享keychain中的資料

KeyChain缺點:

  • 刪除app後不會清除keychain裡的資料,如果儲存密碼等敏感性資料有一定的風險。(越獄後keychain能被導出來)

為了更簡易地使用它,直接到GitHub下載SFHFKeychainUtils第三方套件,接著匯入到專案中。

簡介功能:A small ARC compliant utility to interact with Apple’s Keychain Services.

#import "SFHFKeychainUtils.h"

// 取可以識別的名字
static NSString *const RLKeychainUserName = @"HTKeychainUserName";
static NSString *const RLKeychainServiceName = @"HTKeychainServiceName";

#pragma mark - Key Chain Methods
// 取得密碼
+(NSString *)loginToken
{
    return [SFHFKeychainUtils getPasswordForUsername:RLKeychainUserName andServiceName:RLKeychainServiceName error:nil];
}

// 設定密碼
+(void)setLoginToken:(NSString *)loginToken
{
    [SFHFKeychainUtils storeUsername:RLKeychainUserName andPassword:loginToken forServiceName:RLKeychainServiceName updateExisting:YES error:nil];
}

// 移除密碼
+(void)removeLoginToken
{
    [SFHFKeychainUtils deleteItemForUsername:RLKeychainUserName andServiceName:RLKeychainServiceName error:nil];
}

此套件只有四個方法,使用過後就知道將密碼放到KeyChain中相當簡便!

參考:GitHub – SFHFKeychainUtilsiOS開發– KeyChain使用與共享數據

廣告

Comments on: "[iOS] 將密碼儲存於KeyChain" (1)

  1. […] 很幸運地找到一個方便使用的Library,拿Demo用的View Controller來改就完成了大半!設定密碼、修改密碼、刪除密碼三個功能一次滿足!再搭配上將密碼存到KeyChain中的Library,新的功能就在兩小時內完成~ […]

    按讚數

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: