2

我正在尝试学习如何在我的 react-native 应用程序中安全地保存我的 redux 状态。

我根据文档使用 redux-persist-transform-encrypt:https ://github.com/maxdeviant/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
)

但我不知道如何安全地设置secretKey字符串'my-super-secret-key'

js编译时,字符串的值在bundle中不可见吗?

4

1 回答 1

2

是的,密钥将在JS bundle.To 中可见。要解决此问题,您需要设置nested persisted statesredux-persist并将密钥存储到 asecured-db或以某种方式或使用此处keystore提到的此包。

const mainPersistConfig = {
  key: "main",
  storage: AsyncStorage,
  blacklist: ["yourKeyReducer"]
};

const tokenPersistConfig = {
  key: "token",
  storage: sensitiveStorage
};

由于它提供了creation of the sensitive storage,因此克服了安全问题。

于 2018-03-05T12:14:33.680 回答