質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

XSS

XSS【クロスサイトスクリプティング】は、 ソフトウェアのセキュリティホールの一つで、Webサイトに脆弱性が あることからその脆弱性を利用し攻撃する手法です。 主に、入力フォームなどから悪意あるスクリプトを挿入し 該当ページを閲覧したブラウザ上でそのスクリプトを実行します。

CSRF

クロスサイトリクエストフォージェリ (Cross site request forgeries、CSRF)は、 外部Webページから、HTTPリクエストによって、 Webサイトの機能の一部が実行されてしまうWWWにおける攻撃手法です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

6848閲覧

JWTなどのTokenをlocalstrage(HTML5の)に保管することについて

prof

総合スコア179

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

XSS

XSS【クロスサイトスクリプティング】は、 ソフトウェアのセキュリティホールの一つで、Webサイトに脆弱性が あることからその脆弱性を利用し攻撃する手法です。 主に、入力フォームなどから悪意あるスクリプトを挿入し 該当ページを閲覧したブラウザ上でそのスクリプトを実行します。

CSRF

クロスサイトリクエストフォージェリ (Cross site request forgeries、CSRF)は、 外部Webページから、HTTPリクエストによって、 Webサイトの機能の一部が実行されてしまうWWWにおける攻撃手法です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

3クリップ

投稿2021/02/19 02:59

正直、結論の出づらい内容ですが質問させていただきます。

Tokenの保管方法として、

  • cookie
  • localstrage

が挙げられますが、localstrageがだめだと言っている情報がかなり多いです

自分はJWTを保管しようかと考えています。

localstrageはCSRFに対して脆弱性がない反面、XSSに弱いということだそうです。

しかし、Reactなどのきちんとメンテナンスされているライブラリの場合、XSSに対する脆弱性がないようなものだと思います。きちんとスクリプトをエスケープするはずですし。

入力値をそのまま反映させるdangerous~HTMLを使うなどしなければ、localstrageが優秀に感じますがどうなのでしょうか?

cookieだと、CSRFに対して弱いということが心配なので、localstrageをメンテンナンスサれているJSライブラリで用いて良いでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

リクエストを頂きましたので出てまいりました。

しかし、Reactなどのきちんとメンテナンスされているライブラリの場合、XSSに対する脆弱性がないようなものだと思います。きちんとスクリプトをエスケープするはずですし。

それは甘いです。「React XSS」で検索するだけでも、Reactを使ったアプリケーションのXSSパターンは数多くの記事がヒットしますし、現実の脅威があります。

入力値をそのまま反映させるdangerous.を使うなどしなければ、localstrageが優秀に感じますがどうなのでしょうか?

XSSとCSRFを比較すると、XSSの根絶が非常に難しいのに対して、CSRFの対策は非常に容易です。なので、XSSの脅威を重要視すべきです。それに、脆弱性の影響は XSS > CSRF であり、XSS脆弱性があればCSRF相当の攻撃(影響)は可能です。

cookieだと、CSRFに対して弱いということが心配なので、localstrageをメンテンナンスサれているJSライブラリで用いて良いでしょうか?

「cookieだと、CSRFに対して弱い」というよりも、「localStorageだとCSRFは発生する余地がない」というべきですね(localStorageのつづりが全て間違っていますが大丈夫ですか?)。CSRFは、それこそフレームワークで容易に対策できるので、前述のようにXSSの方を警戒すべきです。

ただし、te2jiさんが指摘されているように、結局のところXSSがあれば、CookieもlocalStorageも大差ないということと、CORSの設定不備(最近よく見かけます)の影響が大きいのはCookieの方なので、最近はlocalStorageでよいのではないかと思い始めています。

投稿2021/02/19 14:11

ockeghem

総合スコア11705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/20 00:34

お付き合いいただき感謝です。 CORS をどう評価するのかが非常に興味深い点でした。 ockeghem さん的には CORS の設定不備をよく見かけるので、その影響度合いの少ない localStorage の評価が【相対的に】上がってきたってことですね。 確かに、CORS が「制限を緩める技術」って理解しないまま使用しているケースは多いように思います。 ありがとうございました。
prof

2021/02/20 02:13

「React XSS」で検索すると、多くの情報が出てきました。 教えていただきありがとうございます。 CSRFの具体的なやり方を知らず、勝手な考えをしていたので、きちんと調べてみます。
ockeghem

2021/02/20 02:18

te2jiさん、コメントありがとうございます。うまく整理していただきましたが、CORSを緩める方法が普及してしまったどころか、一部のフレームワークは「デフォルトでCORSがガバガバになる」ことを見つけまして、「これはCookieだとかえって危ないな」というのが最近の心境です。
退会済みユーザー

退会済みユーザー

2021/02/20 02:38

> ockeghem さん cookie の評価がダダ下がって、localStorag に追い抜いかれた状態ってことですね。 認識をアップデートします。 回答をねだったよかったですw
guest

0

ベストアンサー

localstrageがだめだと言っている情報がかなり多いです。

情報元を提示してください。
文脈を確認したいです。

XSS が可能であれば、一般的にどちらに保存しようと脆弱です。

投稿2021/02/19 03:04

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

prof

2021/02/19 03:25

https://techracho.bpsinc.jp/hachi8833/2019_10_09/80851 https://teratail.com/questions/84388 この記事を読んだときの印象が強かったためか、新しい情報は多くなかったです、申し訳ありません。他のサイトは、情報が5年ほど前だったりと古かったので、無視することにしました。 回答者様の通り、XSSが可能であれば、CookieもLocalstrageも脆弱性があるのは当然です。 一応、セキュリティの観点ではないlocalstrageの欠点として、一部のブラウザで対応していないということが確認できました。 >IE系で使えないバージョンがある >iOSのプライベートブラウジングで使えない https://christina04.hatenablog.com/entry/2016/06/07/123000 https://www.reddit.com/r/Angular2/comments/cubdwa/storing_authentication_tokens_local_storage_or/ この内容からも、正直どっちでもいいと言うことがわかり、localstrageについてはXSSに対して対策すれば問題がなく、ブラウザ次第ということがわかりました。 それらの攻撃手法を具体的に試したこともないので、詳細を調べて知見を深めようと思います。
退会済みユーザー

退会済みユーザー

2021/02/19 03:40

引用元等は質問に追記しておいてもらえますか? 質問は見ても、回答についたコメントは見ない人が一定数います。
退会済みユーザー

退会済みユーザー

2021/02/19 03:42

あ、あんまり早く質問をクローズしないでください。 多分、識者がウォーミングアップしてますw
ockeghem

2021/02/19 03:49

ウォーミングアップ…というか、答えようか、どうしようかとは悩んでいましたw
退会済みユーザー

退会済みユーザー

2021/02/19 04:08

ぜひお願いします。 私が見たいです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問