シングルページアプリの暗号化された認証トークンをブラウザーのlocalStorageに保存することは悪い考えだと私は読みました。これにより、アプリがXSS攻撃に対して脆弱になり、トークンが盗まれた場合、ハッカーはユーザーになりすまし、あらゆる悪を行うことができます。
しかし、私が知る限り、CookieもXSSハイジャックに対して脆弱です。
だから、もしあるとすれば違いは何だろうと思いますか?そして、2つの方法のリスクを比較する方法
名前が示すように、httpOnlyとマークされたCookieはJavaScriptからアクセスできません。したがって、Cookieを使用する「従来の」Webアプリケーションは、フラグが設定されていれば、単純なXSS攻撃に対して脆弱ではありません(もちろん、ブラウザーのバグによって公開されていない場合)。このようなソリューションはCSRFに対して脆弱であるため、それを軽減するためにさらに作業が必要です。
SPAフレームワークでは、「古い学校」のCookieベースのセキュリティに単純に依存するのではなく、承認ヘッダーに入れたいので、JavaScriptでCookieにアクセスする必要があります。これには、現在CSRF耐性があるという利点があります。
SPAの基本的な理論的根拠は、誰かが勝ったjavascriptを注入できた場合です。攻撃者はアプリケーション全体を変更し、盗んだトークンを使って悪意のある行為をしたとしても、被害者自身のブラウザ内で単純に行うことができるため、あなたはしてはいけない XSSの脆弱性があります。 (または単にアプリを変更してユーザーのプレーンテキストのパスワードを盗みます...)
したがって、SPAでXSSが成功した場合の想定結果は100%妥協するため、セッショントークンが公開される可能性を許容することを選択します。
(私の意見では、これは決して解決されたトピックではなく、人々はまだそれについて厄介な議論を続けています。無限のブログ投稿と両側。)