【问题标题】:How to securely save the redux-persist-transform-encrypt key?如何安全地保存 redux-persist-transform-encrypt 密钥?
【发布时间】:2020-11-23 21:10:25
【问题描述】:

我正在尝试对我的 react-native 应用程序的 redux 存储进行持久化和加密。

我正在尝试按照文档使用redux-persist-transform-encrypt

import { persistReducer } from 'redux-persist'
import createEncryptor from 'redux-persist-transform-encrypt'

const encryptor = createEncryptor({
  secretKey: 'my-super-secret-key'
})

const reducer = persistReducer(
  {
    transforms: [encryptor]
  },
  baseReducer
)

但最重要的是找到一种安全的方式来存储“我的超级密钥”。 我已成功从用户输入中获取它并使用react-native-keychain 保存它。 现在的问题是从钥匙串中获取钥匙的功能是异步的,我需要在商店初始化之前获取钥匙。

结果应该是这样的

import { persistReducer } from 'redux-persist'
import createEncryptor from 'redux-persist-transform-encrypt'

const encryptionKey = // get the key here from the keychain before initiating the store

const encryptor = createEncryptor({
  secretKey: encryptionKey
})

const reducer = persistReducer(
  {
    transforms: [encryptor]
  },
  baseReducer
)

有人对我有什么解决方法吗?

【问题讨论】:

    标签: react-native security redux redux-persist


    【解决方案1】:

    我也花了一些时间来解决这个问题。起初,我找到了一个不错的库,可以将生成的密钥保存到名为react-native-sensitive-info 的钥匙串中。之后我遇到了获取和设置生成的密钥是异步的问题。然后我发现 AsyncStorage 被用作persistReducer 的配置中的存储,并且有办法 - 让我们创建一个使用react-native-sensitive-info 的存储。过了一会儿,我偶然发现了一个已经存在并且正在实现完全相同逻辑的库。就是这样 -> redux-persist-sensitive-storage.

    像这样使用它:

    ...
    import createSensitiveStorage from 'redux-persist-sensitive-storage';
    
    const appReducer = combineReducers(myReducers);
    
    const persistConfig = {
      key: 'root',
      storage: createSensitiveStorage({
        keychainService: 'myKeychain',
        sharedPreferencesName: 'mySharedPrefs'
      })
    }
    
    const persistedReducer = persistReducer(persistConfig, appReducer);
    const store = createStore(persistedReducer, applyMiddleware(thunkMiddleware));
    const persistor = persistStore(store);
    ...
    

    就是这样!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-25
      • 2014-10-18
      • 2015-07-04
      • 2015-03-17
      • 2023-03-13
      • 2017-04-30
      • 2014-01-11
      相关资源
      最近更新 更多