Javascript:使用LocalsStorage是不安全的,我想知道为什么



互联网上的许多资源声称LocalStorage可能不安全,因为应用程序容易受到跨站点脚本攻击。如果是这样的话,存储Authenticaton令牌最安全的方式是什么,我知道cookie是另一种选择,但它安全与否?

他们的意思可能是,如果您的网站成为XSS攻击的受害者,攻击者可以从localStorage中提取用户的令牌,因为脚本天生可以访问这些令牌。

这同样适用于大多数cookie,但是您可以将cookie设置为脚本不可用,以便它们仅用于发送回服务器(服务器在服务器中检查并处理身份验证(。这样,XSS攻击就无法从用户浏览器中提取设置了HttpOnly标志的cookie。

同时,还要设置cookie的Secure标志,使其只能通过加密连接进行传输。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#restrict_access_to_cookies

https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#security

https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#define_where_cookies_are_sent

例如,在PHP7.3及更高版本中,您可以使用类似这样的setcookie函数来设置用于身份验证的SecureHttpOnlySameSitecookie:

setcookie("__Host-Auth-Cookie", "123-session-id", [
'expires' => time() + 12 * 60 * 60,
'path' => '/',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax',
]);

相关内容

最新更新