我正在调查redux应用程序的安全性,我在redux存储中存储了某些值,即用户令牌等。并试图查看其他人是否可以通过xss攻击获取访问权限,例如,我检查过sessionStorage,localStorage,cookies,它不存在,并且它不在我的app.js文件(我的包文件)中,因此我的问题。
答案 0 :(得分:11)
当它作为副本关闭时,即将回答How does React and Redux store data? Is it localstorage or cookies?。所以我想在这里粘贴我的答案。
首先,值得注意的是UI库实际上并不管理状态(组件级别状态除外)。 ReactJS和VueJS希望您将数据传递给它们,就像将参数传递给函数一样。他们并不关心这些数据的来源或存储方式。
另一方面,Redux 不是一个UI库 - 它是一个状态管理库。 Redux 确实存储状态。 VueJS对Redux的推论将是" Vuex"。有了这个,你需要知道的下一件事是,状态管理和状态持久性之间存在差异。像Redux和Vuex这样的库通常会跟踪您的变量并提供更改状态的工具(特别是Reducer) - 但是他们不管理该状态的持久性。持久性是指在下次有人访问您的应用时将状态保存到某个地方以重新加载 - 并且似乎是您对此感到好奇(因为您提到了Cookie和本地存储)
持久性通常是手动编码(将状态发送到API端点,将其保存到数据库,然后当您重新加载页面时,您需要ping不同的API端点以检索状态)或者您使用插件/模块州经理为你处理持久性。例如,有一个流行的Redux Local Storage插件(足够简单)redux-localstorage
答案 1 :(得分:7)
从文档的这一部分(http://redux.js.org/docs/FAQ.html#performance-state-memory)我推断它存储在内存中,所以它不是持久的。
答案 2 :(得分:2)
Redux对所有数据使用内部存储器。例如,当您订阅Store时,Redux只是push listener to private array并且不使用Cookie或LocalStorage。
答案 3 :(得分:0)
Redux中的状态存储在内存中。这意味着,如果刷新页面,状态将消失。 redux中的状态只是一个持久存在于内存中的变量,因为所有redux函数都引用了它。
一个误解是:
在redux中,我们知道状态存储为对象。
这是不正确的。 redux中的状态可以是任何有效的JavaScript值,而不仅仅是对象。通常,将它作为对象(或像数组这样的特殊对象)是最有意义的,因为它允许更灵活的数据结构(但是根据需要,您可以将状态设为数字)