簡體   English   中英

如何在 React Native 或 expo 代碼中存儲敏感數據? (帶鑰匙串和鑰匙庫)

[英]How to store sensitive data in React Native or expo code ? ( with Keychain and Keystore )

我看到了一些關於“如何在 React Native 中存儲敏感數據”的問題(比如這個這個),但是,所有這些案例都在談論動態獲取一些敏感數據(例如,從服務器),然后使用AsyncStorage存儲它。 但是,如果您需要在代碼中寫入敏感的令牌/密碼怎么辦?

例如,我想實現這個庫: https : //github.com/fullstackreact/react-native-oauth正如你在第一個例子中看到的,我必須在代碼中寫入秘密令牌。

在所有 react-native 項目目錄中是否有一個文件,我可以在其中放置我的令牌,然后在應用程序中獲取它? 在應用程序中操作這些安全令牌有多安全?

謝謝

如何在 React Native 代碼中存儲敏感數據?

圖書館

現在多個庫允許您在 React Native 代碼中存儲敏感信息:

注意:在本機端,這些庫可以使用:

例子

下面是使用的例子發生反應天然-鑰匙扣存儲敏感數據與反應原生

對於 iOS,它使用鑰匙串共享功能

對於 Android,它使用:

  • API 級別 16-22 使用 Facebook Conceal
  • API 級別 23+ 使用 Android Keystore

你可以這樣使用它:

// Generic Password, service argument optional
Keychain
  .setGenericPassword(username, password)
  .then(function() {
    console.log('Credentials saved successfully!');
  });

// service argument optional
Keychain
  .getGenericPassword()
  .then(function(credentials) {
    console.log('Credentials successfully loaded for user ' + credentials.username);
  }).catch(function(error) {
    console.log('Keychain couldn\'t be accessed! Maybe no value set?', error);
  });

通常,AsyncStorage 用於在 react-native 中存儲數據,但它根本不安全。 expo-secure-store由 expo-team 維護和開發,其工作方式與 AsyncStorage 相同。

它使用加密的鑰匙串服務,在存儲和檢索數據時對數據進行哈希處理,使其超級安全。

此外,可以使用諸如 Realm 之類的加密數據庫,並且加密密鑰將存儲在 Keychain 中。

Expo 也可能不支持 Realm(因此您需要使用裸 React Native 工作流或彈出)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM