Если вы храните JWT в глобальной переменной или в любом хранилище, доступном из глобального контекста, на него распространяется весь код JS на той же странице.Если вы доверяете любому другому JS-скрипту вашей страницы и если вы можете гарантировать, что ваша страница не уязвима для атак внедрения кода, то безопасно хранить JWT в глобальной переменной.
Если вы не можетегарантируйте, что JWT будет безопасным, не используйте глобальные переменные, предпочитайте использовать инкапсуляцию следующим образом:
(function() {
// Retrieve the JWT from somewhere
var jwt = "mockjwt";
//All of the code that needs the JWT goes here
console.log('Safe code:', jwt);
})();
// Evil code, either:
// - Injected through a vulnerability of your website (e.g: eval misuse,
// WYSIWYG editor vulnerable to script tag injection, etc...)
// - Injected because your user got fooled by some "copy/paste this code in the F12 tab
// of your browser, and you'll unlock a secret functionality"
// - Untrusted <script> tag that you added to your website
console.log('Evil code:', jwt); //Fails because the JWT is scoped to the anonymous
//function and is not accessible from anywhere outside
//the function.