React 组件的状态是否容易受到 XSS 攻击?

Is a react component's state susceptible to XSS?

React 组件的状态是否容易受到 XSS 攻击?

我想知道在组件状态中存储 JWT 访问令牌是否比在 localStorage 中危险性低?

根据状态的使用和设置方式,它可以不易受到影响,但并非万无一失。

如果您担心不可信的代码可能会访问它们不应该访问的内容,本地存储的问题之一是页面上的 any 脚本 运行可以轻松访问该域的本地存储中的任何值。相比之下,在某个地方处于 React 状态的值本身就更难访问。

如果在任何地方从组件外部使用状态,它可能容易被恶意脚本拦截。例如,如果在 API 请求中使用状态,则恶意脚本可以修补 window.fetchwindow.XMLHttpRequest 并监视它(除非你也采取预防措施)。如果状态被放到页面上,比如在输入中(即使是隐藏的),恶意脚本检索它就很容易了。

即使不直接在任何地方使用状态,在某些情况下,也几乎不可能gain access to the closure in which it's defined或设置。

通常,如果恶意代码在页面上运行,您就不能指望页面上的任何其他内容 运行 是安全的。最好的第一种方法是确保您的应用程序首先没有任何 XSS 漏洞。防范这种可能性应该是遥远的第二优先事项。