我最近刚开始在react + express应用中使用jwt,并遇到了将jwt令牌存储在何处的问题。似乎两个主要选项是localStorage和cookie,它们都易于受到各种攻击(XSS和CRSF)的攻击。</ p>
但是我发现React应该是XSS安全的(What does it mean when they say React is XSS protected?),所以可以使用localStorage来存储jwt吗?如果不是,行业标准是什么?
答案 0 :(得分:2)
cookie和localStorage都是可以接受的选项,许多应用程序都使用它们。您需要了解他们的利弊,并选择最适合您的用例的
。曲奇饼
httpOnly
,因此javascript将无权访问。这使得无法在XSS攻击中访问令牌。请注意,这并不意味着该应用程序不受XSS攻击。这仅意味着,即使在成功进行XSS攻击的情况下,攻击者也将无法访问令牌。httpOnly
cookie中为身份提供者域设置了较长的刷新令牌。localStorage
保持“ XSS安全”
不是。对于开发人员来说,使它容易受到攻击可能更难,但是任何中等复杂度的React应用程序很可能都具有XSS漏洞。 React绝对不受不同形式的XSS的影响。只要开发人员有多种选择可以将用户输入插入DOM,就会有XSS,因为有时以“使之起作用”的方式解决问题是最容易的。如果您的应用可行,Content-Security-Policy
在现代浏览器中可能会有所帮助。尽管默认情况下React是相当安全的,但这确实是正确的,这意味着通常可以。这是目前任何现代框架的相当标准的要求,并不意味着React中的XSS是不可能的。是的。
最终,一般来说,存储在httpOnly
cookie中的会话ID(具有正确实施的会话管理,例如您的语言或框架所提供的会话管理)是最安全的 ,后跟httpOnly
cookie中的令牌,但这还取决于您的威胁模型和确切的用例。