security - 让用户永远登录到 React Native 应用程序
问题描述
我正在尝试找出让用户在登录后保持登录到我的 RN 应用程序的最佳方法,直到他们卸载该应用程序。
我正在使用一个 Node/Express 后端,它接受每个请求的 JWT,我目前唯一的计划是在登录时发送一个永不过期的 JWT,并使用 AsyncStorage 永久存储它。
这本能地感觉不安全,但我不是安全和令牌方面的专家。我目前正在使用 Expo 来启动我的 RN 应用程序,但将来我计划“弹出”它,一旦我这样做,我可以使用 react-native-keychain 更安全地存储它,但它仍然是一个永不过期的 JWT。
我的 spotify 应用程序从不要求我重新登录,所以我知道我正在尝试做的事情并不疯狂。
但是有更好的方法吗?
解决方案
您不应该使用长期JWT ,因为如果使用的密钥很弱或很短,它们很容易被破解。
有一些可用的库可以帮助您跟踪可以破解JWTjwt-cracker
的暴力破解持续时间,例如c-jwt-cracker
.
因此,您应该使用Expo SDK中已有的SecureStore。 IOS值使用钥匙串服务存储,Android值存储在SharedPreferences中,并使用Android 的 Keystore 系统加密。
如果使用令牌的API中有错误,您可以简单地调用来重新验证或使用拦截器刷新它
推荐阅读
- c# - 双向链接到 ListView 的所有 SelectedItems 的属性?
- c++ - 指向失去价值的对象向量的指针
- android - 如何处理类型不匹配 - 字符串和字符串?
- javascript - 如何在表格中允许 xss
- javascript - Electron 选择带有文本输入和 onclick 事件的目录
- java - 将 EditText 值从 android 发送到 PHP 文件并执行 PHPmailer send() 函数
- python - 使用networkx的有向网络和边缘权重
- android - 如何本地链接库并避免冲突?
- node.js - npm install -g firebase-tools 导致错误
- javascript - 读取请求内容