Successfully reported this slideshow.
Your SlideShare is downloading. ×

(A7)cross site scripting

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 82 Ad

More Related Content

Slideshows for you (20)

Similar to (A7)cross site scripting (20)

Advertisement

More from OWASP Nagoya (16)

Recently uploaded (20)

Advertisement

(A7)cross site scripting

  1. 1. (A7) Cross-Site Scripting (XSS)
 2022/01/21

  2. 2. XSSのレッスンについて
 ● このレッスンで学ぶこと
 ○ XSSとは何か
 ○ 元の開発者が意図しない動作をどのように引き起こすか
 
 2
 1 2 3 4 5 6 7 8 9 10 11 12
  3. 3. XSSのレッスンについて
 ● ゴール
 ○ 以下を説明できること
 ■ XSSの基本的な内容
 ■ XSSがどのように動作するか
 ○ XSSを実際に見せて説明できる
 ■ リフレクテッドXSS
 ■ DOMベースXSS 
 1 2 3 4 5 6 7 8 9 10 11 12
  4. 4. クロスサイトスクリプティング(XSS)と は
 ● 以下のタグを用いて、開発者が意図しない動作をさせる脆弱性
 ○ HTMLタグ
 ○ Scriptタグ
 ● サニタイジングやエンコーディングされずにブラウザにレンダリングさ れることにより発生する
 1 2 3 4 5 6 7 8 9 10 11 12
  5. 5. クロスサイトスクリプティング(XSS)と は
 ● 有害でかつ一般的なセキュリティの問題
 ○ 攻撃から守る方法はよく知られている
 ■ しかし、問題が残っているWebサイトもたくさんある
 ○ 対応箇所が多いため、修正漏れが起こりやすい
 ● XSSが与えるインパクト
 ○ JavaScript経由で呼び出される特権関数が危険にさらされる
 ○ 適切に保護しないと、Cookieのような機微なデータが盗まれる
 1 2 3 4 5 6 7 8 9 10 11 12
  6. 6. XSSのサンプル
 ● JavaScriptコンソールに以下を入力するとXSSが発生する
 
 
 ● 脆弱な入力フィールドに以下の値を入力するとXSSが発生する
 alert("XSS Test");
 alert(document.cookie);
 <script>alert("XSS Test")</script>
 1 2 3 4 5 6 7 8 9 10 11 12
  7. 7. FirefoxでJavaScriptを実行してみよう
 1. ふたつめのタブを開きます
 2. WebGoatのページのURLを入力します
 3. それぞれのタブのJavaScriptコンソールに以下を入力します
 
 
 
 alert(document.cookie);
 それぞれのタブのCookieは同じでしょうか
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  8. 8. JavaScriptコンソールの開き方
 JavaScriptコンソールは以下の流れで開きます
 1. Developer Toolsを開く
 – 【F12】を押下
 2. コンソールタブへ移動する
 1 2 3 4 5 6 7 8 9 10 11 12 Try it!
  9. 9. JavaScriptコンソールの開き方
 コピーしたテキストをコンソールに貼付すると上記の警告が表示されます (初回のみ) allow pastingとコンソールに入力後、貼付しなおしてください。 1 2 3 4 5 6 7 8 9 10 11 12 Try it!
  10. 10. FirefoxでJavaScriptを実行してみよう
 • ふたつめのタブを開きます
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  11. 11. FirefoxでJavaScriptを実行してみよう
 • WebGoatのページのURLを入力します
 http://localhost:8080/WebGoat/start.mvc#lesson/CrossSiteScripting.less on/1
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  12. 12. FirefoxでJavaScriptを実行してみよう
 • コンソールに下記を入力します
 javascript:alert(document.cookie);
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  13. 13. FirefoxでJavaScriptを実行してみよう
 • Cookieが表示されます。もう一つのタブでも試してみましょう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  14. 14. FirefoxでJavaScriptを実行してみよう
 • 二つのタブで同じ値なので、テキストボックスに
 「yes」と入力します
 yes
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  15. 15. よくXSSが発生する箇所
 ● 入力した検索条件を表示するフィールド
 ● ユーザデータを表示する入力フィールド
 ● ユーザの入力値を表示するエラーメッセージ
 ● ユーザの入力値を保持するhiddenフィールド
 ● ユーザの入力値を表示するページ
 ○ メッセージボード
 ○ 自由に入力できるコメント
 ● HTTPヘッダー
 1 2 3 4 5 6 7 8 9 10 11 12
  16. 16. XSSに対処しないといけない理由
 ● XSSにより以下のことが引き起こされる
 ○ セッションのCookieが盗まれる
 ○ 不正なリクエストが作成される
 ○ クレデンシャル情報(ユーザ認証に利用される情報)を収集す る不正なフィールドが作成される
 ○ 不正なサイトへのリダイレクトが埋め込まれる
 ○ 正当な利用者になりすますリクエストを作成する
 1 2 3 4 5 6 7 8 9 10 11 12
  17. 17. XSSに対処しないといけない理由
 ● XSSにより以下のことが引き起こされる
 ○ クレデンシャル情報が盗まれる
 ○ 利用者のPCで悪質なコードの実行される
 ○ 敵対的で不適切なコンテンツが挿入される
 <img src=“http://malicious.site.com/image.jpg/>
 “>GoodYear recommends buying BridgeStone tires…
 1 2 3 4 5 6 7 8 9 10 11 12
  18. 18. XSSに対処しないといけない理由
 ● フィッシング攻撃に悪用されてしまう
 ○ ユーザが普段利用しているサイトが攻撃に利用される
 1 2 3 4 5 6 7 8 9 10 11 12
  19. 19. XSSの事例
 ● 米オークションサイトの「eBay」でXSSの脆弱性を悪用され、アカ ウント情報が盗まれた
 ○ 出品リストに悪質なJavascriptを埋め込まれた
 ○ 出品リストを利用者が表示するとコードが実行され、偽装され たログインフォームにリダイレクトされた
 https://news.netcraft.com/archives/2017/02/17/hackers-still-exploiting -ebays-stored-xss-vulnerabilities-in-2017.html

  20. 20. XSSの種類
 ● リフレクテッドXSS
 ○ ユーザのリクエストを元に以下が実行される
 ■ ユーザのブラウザに悪意のあるコンテンツを表示する
 ■ サーバーからのレスポンスに悪意のあるコンテンツを追加 する
 ■ ブラウザユーザの権限で任意の処理を実行する
 ○ 悪用するためにソーシャルエンジニアリングが必要
 1 2 3 4 5 6 7 8 9 10 11 12
  21. 21. XSSの種類
 ● DOMベースXSS
 ○ ユーザのリクエストを元に以下が実行される
 ■ クライアントサイドスクリプトによって、悪意のあるコンテン ツを書き込む
 ■ ブラウザユーザの権限で任意の処理を実行する
 ○ リフレクテッド型と似ている
 1 2 3 4 5 6 7 8 9 10 11 12
  22. 22. XSSの種類
 ● ストアドXSS
 ○ 悪意のあるコンテンツがサーバに蓄積される
 ■ 蓄積される場所の例
 ● データベース
 ● ファイルシステム
 ○ 蓄積されたコンテンツがユーザのブラウザに表示される
 ○ 悪用するためにソーシャルエンジニアリングが必要ない
 1 2 3 4 5 6 7 8 9 10 11 12
  23. 23. リフレクテッドXSSのシナリオ
 ● 攻撃者は被害者に悪意あるURLを送る
 ● 被害者はリンクをクリックしてしまう
 ● URLに不正なスクリプトが埋め込まれており、被害者のブラウザで 悪意あるスクリプトが実行される
 ○ スクリプトでセッションIDなどの機微な情報が盗まれ、攻撃者に 送信される
 1 2 3 4 5 6 7 8 9 10 11 12
  24. 24. リフレクテッドXSSのシナリオ
 1 2 3 4 5 6 7 8 9 10 11 12 1)XSSの脆弱性を見つける
 2)悪意あるURLを送る
 3)URLをクリックする
 4)攻撃がサイトへ送られる
 5)攻撃が被害者へ反射する
 6)攻撃が実行される
 7)被害者のブラウザから機 微な情報が送信される

  25. 25. リフレクテッドXSSに挑戦してみよう
 ● すべての入力について検証するのがよいプラクティスです
 ○ XSSはユーザの入力が検証されていない時に発生します
 ● リフレクテッドXSSでは攻撃者は悪意あるスクリプトを含んだURLを 作成し、クリックさせるため次のようなことをします
 ○ そのURLを他のWebサイトに投稿する
 ○ メールで送る 
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  26. 26. リフレクテッドXSSに挑戦してみよう
 ● XSSの影響を受けるフィールドを特定してみましょう
 ● alert()かconsole.log()を利用して、入力フィールドがXSSに脆弱かを 確認できます
 ○ この方法を利用して脆弱なフィールドを見つけましょう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  27. 27. リフレクテッドXSSに挑戦してみよう
 ● ヒント1
 ○ 入力がどのように処理されるかを考えてください
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  28. 28. リフレクテッドXSSに挑戦してみよう
 ● ヒント1
 ○ 入力がどのように処理されるかを考えてください
 ● ヒント2
 ○ Quantityの入力はおそらく数字として処理されています
 ○ テキストを入力できる箇所はあるでしょうか
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  29. 29. リフレクテッドXSSに挑戦してみよう
 ● ヒント1
 ○ 入力がどのように処理されるかを考えてください
 ● ヒント2
 ○ Quantityの入力はおそらく数字として処理されます
 ○ テキストを入力できる箇所はあるでしょうか
 ● ヒント3
 ○ ボタンを押した後に、入力した情報は画面に表示されているで しょうか
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  30. 30. リフレクテッドXSSに挑戦してみよう
 ● ヒント2
 ○ Quantityの入力はおそらく数字として処理されます
 ○ テキストを入力することはできるでしょうか
 ● ヒント3
 ○ ボタンを押した後に、入力した情報は画面に表示されているで しょうか
 ● ヒント4
 ○ 「Purchase」ボタンを押してみましょう。購入後の確認メッセージ でJavascriptを実行してみてください
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  31. 31. リフレクテッドXSSに挑戦してみよう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 <script>alert(1);</script>
 (答え)

  32. 32. リフレクテッドXSSに挑戦してみよう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 入力後に「Purchase」ボタンを押す
 (答え)

  33. 33. リフレクテッドXSSに挑戦してみよう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 入力したjavascriptが実行されます
 (答え)

  34. 34. 脆弱性のあるJavaコード
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 fild1を出力用文字列 にそのまま結合 (答え)

  35. 35. Self XSS or リフレクテッドXSS
 ● lesson7でスクリプトを実行できたはずです。ただし、この時 点では、"Self XSS”と見なされます。
 ● なぜでしょうか?
 ● XSSを引き起こすためのリンクがないからです。以下を試し て、何が起こるかを確認してください。
 localhost:8080/WebGoat/CrossSiteScripting/attack5a?QTY1=1&QTY2=1&QTY3=1& QTY4=1&field1=<script>alert('my%20javascript%20here')</script>4128+3214+0002+1 999&field2=111
 1 2 3 4 5 6 7 8 9 10 11 12
  36. 36. Self XSS or リフレクテッドXSS
 1 2 3 4 5 6 7 8 9 10 11 12 ● XSSが含まれるテキストが"output"に返ってくる。(本リンク 押下ではポップアップは発生しない)
 ● このoutputの値を用いて攻撃をレンダリングするとalertが実 行される。
 (実行結果)

  37. 37. リフレクテッド XSS、DOMベース XSS
 ● DOMベースのXSSは、リフレクテッドXSSのもう1つの形式で す。どちらも、ブラウザで反射する(ブラウザに表示される)入 力を持つリンクにより発動されます。 
 ● DOMと”従来の”リフレクテッドXSSの違いは、DOMでは、ペイ ロードがサーバーに送信されないことです。クライアント側の みで処理されます。
 1 2 3 4 5 6 7 8 9 10 11 12
  38. 38. リフレクテッドXSS、DOMベース XSS
 ● 攻撃者は悪意のあるURLを被害者に送信
 ● 被害者がリンクをクリック
 ● リンク先は「悪意のあるWebページ」、または「脆弱な遷移先 のWebページ」の可能性
 ● 悪意のあるWebページの場合、自身のJavaScriptを使用し て、別のページ/ URLを攻撃する可能性がある
 1 2 3 4 5 6 7 8 9 10 11 12 (攻撃シナリオ例 1/2)

  39. 39. ● 脆弱なページはペイロードをレンダリングし、ページ/サイト のコンテキストで攻撃を実行
 ● 悪意のあるスクリプトは、ローカルアカウントの特権でコマン ドを実行する可能性がある
 
 被害者は攻撃が発生したことに気づかない。。。
 攻撃者は、”<script>alert('xss')</ script>”は使用しません。
 1 2 3 4 5 6 7 8 9 10 11 12 (攻撃シナリオ例 2/2)
 リフレクテッドXSS、DOMベース XSS

  40. 40. DOMベース XSSの可能性を特定
 ● DOMベースのXSSは通常、クライアント側のコードでルート 構成を探すことで見つけることができます。ページに反射さ れている入力を受け取るルートを探します。
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (問題文の日本語訳)

  41. 41. DOMベース XSSの可能性を特定
 ● この例では、ルートハンドラーで「test」コードを探します。 WebGoatでは、主要なJavaScriptライブラリとして backbone.jsを使用します。
 ● テストコードが実稼働環境に残る場合があります。多くの場 合、テストコードは非常に単純であり、セキュリティや品質管 理に欠けています!
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (問題文の日本語訳)

  42. 42. DOMベース XSSの可能性を特定
 ● あなたの目的は、ルートを見つけてエクスプロイトすることで す。最初に…基本ルートは何ですか?例として、このレッス ンのURLを見てください。
 /WebGoat/start.mvc#lesson/CrossSiteScripting.lesson/9
 のようになります。
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (問題文の日本語訳)

  43. 43. DOMベース XSSの可能性を特定
 ● この例のベースルートは、start.mvc#lesson/ です。
 その後の CrossSiteScripting.lesson/9は、JavaScriptの ルートハンドラーによって処理されるパラメータです。
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (問題文の日本語訳)

  44. 44. DOMベース XSSの可能性を特定
 ● 開発中アプリに残ったテストコードのルートは何ですか?こ の問題に答えるには、JavaScriptソースを確認する必要が あります。
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (問題文の日本語訳)
 テストコードのベース ルートを探して、入力 します。
  45. 45. DOMベース XSSの可能性を特定
 ● クライアント側のコードを検索するには、ブラウザの開発者 ツールを使用します。
 (使用方法がわからない場合は、〔WebGoat〕-〔General〕の開発者ツー ルのレッスンを確認してください。)
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (ヒント1)
 ヒントが表示され ます。
  46. 46. DOMベース XSSの可能性を特定
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (右クリック)
 ●Firefox:開発ツール
 ●Chrome:開発ツール

  47. 47. DOMベース XSSの可能性を特定
 ● アプリケーションコードを探しているので、 WebGoat/js/goatAppフォルダのroutesを処理するファイル を確認します。
 
 
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (ヒント2)
 (参考)
 デバッガーの”Ctrl + Shift + F”で javaScriptから任意の文字が検索で きます。

  48. 48. DOMベース XSSの可能性を特定
 ● 回答は、ベースルートを送信してください。
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (ヒント3)
 (参考)
 このlessonのベースルートは、start.mvc#lesson/ です。

  49. 49. DOMベース XSSの可能性を特定
 ● まだ見つかりませんでしたか? GoatRouter.jsファイルを確 認します。簡単に判別できるはずです。
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (ヒント4)

  50. 50. DOMベース XSSの可能性を特定
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (答え)
 ‘lessonRoute’とは 別に、’testRoute’が あります。
  51. 51. DOMベース XSSの可能性を特定
 1 2 3 4 5 6 7 8 9 10 11 12 Try it! (答え)
 start.mvc#test/
 ● この例のベースルートは、start.mvc#lesson/ なので、 lessonをtestに変えたルートが答えです。
 ⇒ start.mvc#test/

  52. 52. DOMベースXSSに挑戦してみよう
 ● webgoat.customjs.phoneHome()を実行してみましょう
 ○ 前レッスンのTry Itで見つけたテストルートを利用します
 ■ 渡したパラメータがそのまま画面に表示されています
 ■ エンコードされずに内部関数が実行されています
 ○ 新しいTabを開き、URL経由で関数を実行しましょう
 ○ 関数を実行するとランダムの値がコンソールに表示されます
 ■ 表示された値をテキストボックスに入力してください
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  53. 53. DOMベースXSSに挑戦してみよう
 ● ヒント1
 ○ 新しいタブを開き、前回のレッスンで発見したテストルートをURL に入力します
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  54. 54. DOMベースXSSに挑戦してみよう
 ● ヒント1
 ○ 新しいタブを開き、前回のレッスンで発見したテストルートをURL に入力します
 ● ヒント2
 ○ URLは以下のような形になります
 ■ http://localhost:8080/WebGoat/start.mvc#テストルート/パ ラメータ
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  55. 55. DOMベースXSSに挑戦してみよう
 ● ヒント2
 ○ URLは以下のような形になります
 ■ http://localhost:8080/WebGoat/start.mvc#テストルート/パラメー タ
 ● ヒント3
 ○ テストルートに送ったパラメータは画面に表示されます
 ■ パラメータにJavaScriptを加えてみましょう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  56. 56. DOMベースXSSに挑戦してみよう
 ● ヒント2
 ○ URLは以下の形になります
 ■ http://localhost:8080/WebGoat/start.mvc#テストルート/パラメー タ
 ● ヒント3
 ○ テストルートに送ったパラメータは画面に表示されます
 ■ パラメータにJavaScriptを加えてみましょう
 ● ヒント4
 ○ Scriptタグを使う必要があります
 ○ JavaScriptはレンダリングされたときに実行されます
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  57. 57. DOMベースXSSに挑戦してみよう
 ● ヒント3
 ○ テストルートに送ったパラメータは反射されます
 ■ それを利用してJavaScriptを実行してみましょう
 ● ヒント4
 ○ Scriptタグを使う必要があります
 ○ JavaScriptはレンダリングされたときに実行されます
 ● ヒント5
 ○ URLバーを利用するので、パラメータに対しURLエンコードする必要が あります
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  58. 58. DOMベースXSSに挑戦してみよう
 ● ヒント4
 ○ Scriptタグを使う必要があります
 ○ JavaScriptはDOMにレンダリングされたときに実行されます
 ● ヒント5
 ○ URLバー利用するので、パラメータに対しURLエンコードする必要があ ります
 ● ヒント6
 ○ 「/」を「%2F」に置き換える必要があります
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12
  59. 59. DOMベースXSSに挑戦してみよう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • ふたつめのタブを開きます
 (答え)

  60. 60. DOMベースXSSに挑戦してみよう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • アドレスバーに以下を入力します
 http://localhost:8080/WebGoat/start.mvc#test/<script>webgo at.customjs.phoneHome()<%2fscript>
 
 (答え)

  61. 61. DOMベースXSSに挑戦してみよう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • F12を押して、phoneHome Responseを確認します
 (答え)

  62. 62. DOMベースXSSに挑戦してみよう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • F12を押して、phoneHome Responseを確認します
 (答え)

  63. 63. DOMベースXSSに挑戦してみよう
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • 確認した値を入力し、「submit」ボタンを押します
 (答え)

  64. 64. DOMベースXSSに挑戦してみよう(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストからXSSまでの流れ
 http://localhost:8080/WebGoat/start.mvc#test/パラメータで は、testRouteメソッドが呼ばれる
 

  65. 65. DOMベースXSSに挑戦してみよう(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストからXSSまでの流れ
 testRouteメソッドでは、lessonController.testHandlerにパラメー タを渡している

  66. 66. DOMベースXSSに挑戦してみよう(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストからXSSまでの流れ
 testHandlerでは、lessonContentView.showTestParamにパラ メータを渡している

  67. 67. DOMベースXSSに挑戦してみよう(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストからXSSまでの流れ
 showTestParamでは、パラメータをエンコードせずにHTMLに セットしている

  68. 68. 参考資料 A7:2017(XSS)
 # 資料名 カテゴリ URL 1 OWASP Top 10 -2017 A7 クロスサイトスクリプティング (XSS) https://owasp.org/www-pdf-archive/OWASP_Top _10-2017(ja).pdf 2 OWASP Web Security Testing Guide v5.0 Reflected Cross Site Scripting https://owasp.org/www-project-web-security-testing-g uide/latest/4-Web_Application_Security_Testing/07-I nput_Validation_Testing/01-Testing_for_Reflected_C ross_Site_Scripting 3 Stored Cross Site Scripting https://owasp.org/www-project-web-security-testing-g uide/latest/4-Web_Application_Security_Testing/07-I nput_Validation_Testing/02-Testing_for_Stored_Cro ss_Site_Scripting 4 OWASP Cheat Sheet Cross Site Scripting Prevention https://cheatsheetseries.owasp.org/cheatsheets/Cros s_Site_Scripting_Prevention_Cheat_Sheet.html 5 DOM based XSS Prevention https://cheatsheetseries.owasp.org/cheatsheets/DO M_based_XSS_Prevention_Cheat_Sheet.html
  69. 69. 以下、補足

  70. 70. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  71. 71. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  72. 72. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  73. 73. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  74. 74. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  75. 75. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  76. 76. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  77. 77. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  78. 78. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  79. 79. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  80. 80. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  81. 81. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ

  82. 82. 画面描画の流れ(補足)
 Try it! 1 2 3 4 5 6 7 8 9 10 11 12 • リクエストから画面描画までの流れ


×