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

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

新規登録して質問してみよう
ただいま回答率
85.47%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

XSS

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

Q&A

解決済

3回答

2985閲覧

XSSとlocalStorageの使用について

tsuyo_244

総合スコア219

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

XSS

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

0グッド

2クリップ

投稿2021/12/22 11:20

XSSとブラウザのlocalStorageなどに値を保存しないプラクティスについて質問です。

下記のページなどを読んでみると、外部ライブラリなどから勝手にlocalStorageの情報を読み取られて外部に送信されてしまうリスクがあるからそういったJavaScriptが容易にアクセス可能なところに秘匿な情報を置くべきではないということはおおよそ理解しております。
https://techracho.bpsinc.jp/hachi8833/2019_10_09/80851

しかし、ふと考えてみるとStorageに限らずWebページ上に表示される内容も同じようにJavaScriptから読み取られてしまうという点では同じなのではと思えてきました。
(画面上の要素にはDOMから簡単にアクセスができるため)

この理屈でいくとフォームの確認画面などで入力した個人情報が表示される場面なども同様に危険だとなってしまうような気がしてしまい、画面上に表示するのとlocalStorageに保存することで何か違いがあるのだろうか知りたいです。

どうぞよろしくお願いします。

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

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

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

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

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

guest

回答3

0

既に私の過去の回答を紹介いただいていますが、今年のPHPカンファレンスでこのテーマの講演をしておりまして、そちらのスライドと動画を紹介したいと思います。

SPAセキュリティ入門~PHP Conference Japan 2021
PHP Conference Japan 2021: SPAセキュリティ入門 / 徳丸 浩 - YouTube

少し長いですが、ご質問への回答が全て含まれているていると思います。

投稿2021/12/22 14:42

編集2021/12/22 14:43
ockeghem

総合スコア11701

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

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

tsuyo_244

2021/12/25 02:58

ご回答ありがとうございます。 返信が遅くなってしまい申し訳ございません。 ご紹介いただいた回答も拝見させていただき大変勉強になりました。 また講演のスライドと動画も拝見させていただきました。 SPAでログインをはじめとした各種セキュリティをどう担保するのかについて 質問した内容以外にも大変勉強になる部分がございました。 ありがとうございました。
guest

0

ベストアンサー

ふと考えてみるとStorageに限らずWebページ上に表示される内容も同じようにJavaScriptから読み取られてしまうという点では同じなのではと思えてきました。

はい。同じです。cookie も危険にさらされます。

参考)
こちらの ockeghem さんの回答が非常に面白いです。
JWTなどのTokenをlocalstrage(HTML5の)に保管することについて

投稿2021/12/22 11:40

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tsuyo_244

2021/12/22 11:49

ありがとうございます! ご紹介いただいた回答も拝見させていただきました。 私もセキュリティの面ではlocalStorageよりCookieと認識していましたが単純にそうでもないのですね。。
退会済みユーザー

退会済みユーザー

2021/12/22 12:05 編集

XSS を使用した最大脅威デモ動画もあるので、紹介しときますね。 完全版:管理画面に対するXSS攻撃でクレジットカード情報を盗む手口-徳丸浩のウェブセキュリティ講座 https://www.youtube.com/watch?v=FpCabifwhKg 画面に表示されている情報どころかサーバ乗っ取りが可能です。 まぁ、XSS じゃなくてどっちかっていうとアップローダの不備が本質的な問題抱えてる動画ですけど。
退会済みユーザー

退会済みユーザー

2021/12/22 12:10 編集

ちなみにですが、ブラウザ側で JavaScript のおかしな挙動を制限する機能も実装されています。 Same-Origin Policy が代表的ですが、それ以外にもあるので調べてみると少しは安心できるようになります。
tsuyo_244

2021/12/22 12:17

参考動画もありがとうございます...取り急ぎ冒頭部分だけ拝見しましたが恐ろしいですね。。一般ユーザでなく裏側の管理者がターゲットになるとこういう事態にもなるんですね。。後ほどじっくり見てみます。 またブラウザ側でJavaScriptの動作を制限する機能があるというのも初耳でした。 こちらも自分で調べてみようと思います。 たくさん教えていただき大変勉強になりました。
guest

0

Storageに限らずWebページ上に表示される内容も同じようにJavaScriptから読み取られてしまうという点では同じなのでは

なのでサーバーサイドの言語、DBを組み合わせ、アクセスのために認証を必須にしたり(自身の情報は自身だけがアクセスできる)、セッションによって取得表示する情報をログイン者に紐づくものだけに限定するような仕組みが取られています。

また、非SSLに対してブラウザが警告出すようになって久しいですね。

投稿2021/12/22 11:31

m.ts10806

総合スコア80854

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

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

tsuyo_244

2021/12/22 11:42

早速ご回答ありがとうございます! すみません、ちょっと理解ができていないため追加で質問させてください。 サーバサイドでの認証によってログインした人にだけ自身の情報を見せるという点はその通りだと思ったのですが、仮にサーバ側がセキュアにつくられていたとしてもログインした人のブラウザの画面に表示された時点でXSSの脆弱性がある場合には画面に表示された内容をJavaScriptで外部に送信されてしまう可能性があるのかなと考えたのですがいかがでしょうか?
m.ts10806

2021/12/22 11:46

そのXSSの脆弱性は誰がどう放り込むか です。 結局のところ誰かが入力されたデータが表示されるときに起きるものと思いますが、「自分が入力した情報は自分にしか見せない」場合は、結局自分にしか影響がないように思います。 もう少し想定を具体的にされたほうが良いのでは
tsuyo_244

2021/12/22 12:03

想定がふわっとしておりすみません。。 前提としてサーバ側にXSSの脆弱性がある場合ではなくてフロント側JavaScriptにXSSの脆弱性があった場合を想定しています。 例えばブラウザの画面上に表示された内容を外部に勝手に送信してしまうような処理が組み込まれてしまっているJavaScriptのライブラリを知らずに使っているサイトがあった場合、ユーザから見ると自分が入力した情報が自分にしか見えていないようでも裏側ではJavaScriptで情報が抜き取られていることが起こりえるのかという質問でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問