Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マクロな視点から捉える Web セキュリティ / Web Security from the Macro Perspective

マクロな視点から捉える Web セキュリティ / Web Security from the Macro Perspective

セキュリティ・キャンプ全国大会 2020 オンラインの 講義 B7 「マクロな視点から捉える Web セキュリティ: Web インフラストラクチャを利用した攻撃とサイドチャネル攻撃の実践と評価」のスライドです。

発表者の情報: https://shift-js.info
Twitter: https://twitter.com/lmt_swallow

Takashi Yoneuchi

November 23, 2020
Tweet

More Decks by Takashi Yoneuchi

Other Decks in Programming

Transcript

  1. ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FCΠϯϑϥετϥΫνϟΛར༻ͨ͠߈ܸͱαΠυνϟωϧ߈ܸͷ࣮ફͱධՁ
    :0/&6$)* 5BLBTIJ [email protected]

    IUUQTTIJGUKTJOGP

    View Slide

  2. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ຊߨٛࢿྉʹ͍ͭͯ
    4QFBLFS%FDLެ։൛޲͚ͷิ଍

    ຊߨٛࢿྉ͸ʮηΩϡϦςΟɾΩϟϯϓશࠃେձΦϯϥΠϯʯͷ
    ϓϩμΫτηΩϡϦςΟτϥοΫ#ͷߨٛͰར༻͞Εͨ΋ͷͰ͢ɻ
    ৄࡉIUUQTXXXJQBHPKQKJO[BJDBNQ[[email protected]@[email protected]


    View Slide

  3. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ຊߨٛࢿྉʹ͍ͭͯ
    4QFBLFS%FDLެ։൛޲͚ͷิ଍

    ߨٛͷϚςϦΞϧ͸ҎԼͷ(JU)VC3FQPTJUPSZʹશͯ֨ೲͯ͋͠Γ·͢ɻ
    IUUQTHJUIVCDPNMNUTXBMMPXTFDDBNQC

    View Slide

  4. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    XIPBNJ
    4FFIUUQTTIJGUKTJOGP
    ‣ :0/&6$)* 5BLBTIJถ಺وࢤ
    [email protected]

    ԿΛ͍ͯ͠Δਓʁ
    ‣ ηΩϡϦςΟΤϯδχΞ!גࣜձࣾ'MBUU4FDVSJUZ
    ‣ #!౦ژେֶཧֶ෦৘ใՊֶՊ
    ‣ ηΩϡϦςΟɾΩϟϯϓͱͷؔ܎ੑ͸ʁ
    ‣ ೥தԝେձ8FCηΩϡϦςΟΫϥεଔۀ
    ‣ ೥ϛχΩϟϯϓJOԬࢁߨࢣ
    ‣ ೥શࠃେձߨࢣʢ#ʣ
    ‣ Ҏ߱ηΩϡϦςΟɾΩϟϯϓڠٞձߨࢣҭ੒(޿ใ(

    View Slide

  5. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    XIPBNJ
    ׆ಈ঺հ

    ‣ ػց͕ಈ͍͍ͯΔͷΛݟΔͷ͕޷͖Ͱ͢ɻ
    ‣ ༡ͼͷҰ؀ͱͯ͠ɺ౓ʑंྠͷ࠶ൃ໌Λ͍ͯ͠·͢ɻ
    ‣ ྫ-JOVY͕ಈ࡞͢Δ3*4$7$16Λࣗ࡞ͨ͠ ೥౓$16࣮ݧ༨ڵ

    IUUQTEJBSZTIJGUKTJOGPCVJMEJOHBSJTDWDQVGPSMJOVY

    View Slide

  6. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    XIPBNJ
    ׆ಈ঺հ

    ‣ ಈ͍͍ͯΔػցͷηΩϡϦςΟΛߟ͑Δͷ΋޷͖Ͱ͢ɻ
    ‣ ݸਓతͳ׆ಈͱͯ͠͸ɺ5IFPSFUJDBMͱ1SBDUJDBMͷؒʹҐஔ͢ΔΑ͏ͳ߈ܸ
    ख๏ͷݕ౼ɾௐࠪΛ͍ͯ͠·͢ɻ
    ‣ ྫ"3PVHI*EFBPG#MJOE3FHVMBS&YQSFTTJPO*OKFDUJPO"UUBDL
    IUUQTEJBSZTIJGUKTJOGPCMJOESFHVMBSFYQSFTTJPOJOKFDUJPO

    import re
    import sys
    secret = "this_is_secret_value"
    r = input("Give a regexp to search: ")
    _ = timeout(re.match(r, secret), 5)
    print("Done :P")
    ৚݅͑͞ἧ͑͹TFDSFUͷ
    ಺༰͕ϦʔΫͰ͖Δʂ

    View Slide

  7. ͸͡Ίʹ
    1SFGBDF

    View Slide

  8. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ຊߨٛͷ໨త
    ‣ 8FCΞϓϦέʔγϣϯͷηΩϡϦςΟΛɺैདྷΑΓ΋େہతʹϨϏϡʔͰ͖Δ
    ਓࡐΛ૿΍͢͜ͱɻ
    ‣ 8FCΞϓϦέʔγϣϯͷҰߦҰߦΛηΩϡΞʹॻͨ͘Ίͷํ๏࿦ɺ͍Θ͹8FCΞϓϦ
    έʔγϣϯͷϛΫϩͳηΩϡϦςΟ؍఺ʹؔͯ͠͸ɺ͢Ͱʹଟ͘ͷॻ੶΍8FCαΠτ
    ͷจݙʹΑΓઆ໌͞Ε͍ͯ·͢ɻ
    ‣ ຊߨٛͰ͸ɺ8FCΞϓϦέʔγϣϯΛ࣮Քಇʹ͍࣋ͬͯ͘ࡍʹ࣋ͨͳͯ͘͸ͳΒͳ͍ɺ
    8FCΞϓϦέʔγϣϯͷϚΫϩͳηΩϡϦςΟ؍఺ΛओʹऔΓѻ͍͖ͬͯ·͢ɻ
    ‣ ࠷ઌ୺ͷ8FCηΩϡϦςΟྖҬʹڵຯΛֶ࣋ͬͨੜΛ૿΍͢͜ͱɻ
    ‣ ͥͻ๻ͱҰॹʹ8FCηΩϡϦςΟʹ͍ͭͯߟ͍͖͑ͯ·͠ΐ͏ʂ

    View Slide

  9. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ͱ΋ɺߨٛ͸࣌ؒΆ͖ͬΓͳͷͰʜ
    ‣ ߨٛ͸I͔͋͠Γ·ͤΜ͔ΒɺԿ΋͔΋͓఻͑Ͱ͖ΔΘ͚Ͱ͸͋Γ·ͤΜ
    ‣ ͔͠͠ɺ͜ͷݶΒΕͨ࣌ؒͷதͰɺҎԼΛఏڙͰ͖ͨΒͱࢥ͍ͬͯ·͢ɻ
    ‣ ֶशͷ౔୆Λங͘ػձ
    ‣ ຊߨٛͰ͸ɺ͸͡Ίʹɺ8FCηΩϡϦςΟྖҬͷ֓؍ʹ͍ͭͯऔΓѻ͍·͢ɻ
    ‣ ຊߨٛʹඞཁͳൣғͷ஌ࣝ͸ɺͰ͖Δ͚ͩTFMGDPOUBJOFEͳܗͰऔΓѻ͍·͢ɻ
    ‣ 8FCηΩϡϦςΟྖҬͷֶशΛਐΊ͍ͯ͘Լ஍Λ࡞Γ·͠ΐ͏ɻ
    ‣ ֶशͷࢦ਑ΛಘΔػձ
    ‣ 0QUJPOBMͱ͍͏෇ه͕͋Δԋश͸ɺΑΓਂ͘ߨٛͷຊےΛֶͿͨΊͷ΋ͷͰ͢ɻ
    ‣ "EWBODFEͱ͍͏෇ه͕͋Δԋश͸ɺߨٛͷຊےͱ͸ඞͣ͠΋ؔ܎ͷͳ͍ɺൃలత
    ͳ࿩୊ΛֶͿͨΊͷ΋ͷͰ͢ɻ
    ‣ ʮ͜͏͍͏ੈք͕͋ΔΜͩʯͱ͍͏ؾ͖ͮΛͨ͘͞Μಘͯ΋Β͑Δͱخ͍͠Ͱ͢ɻ

    View Slide

  10. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ͦͷଞ஫ҙࣄ߲
    ‣ ຊߨٛ͸߈ܸٕज़ʹؔ͢Δઆ໌ΛؚΜͰ͍·͢ɻ
    ‣ ͜ͷΑ͏ͳઆ໌Λఏڙ͍ͯ͠Δͷ͸ɺडߨऀͷօ༷ʹݪཧ΍ϦεΫΛ͔ͬ͠Γͱ
    ཧղ͍ͯͨͩͨ͘͠ΊͰ͋Γɺ൜ࡑߦҝΛॿ௕͢ΔͨΊͰ͸͋Γ·ͤΜɻ
    ‣ αΠόʔηΩϡϦςΟؔ࿈๏੍΍ٕज़ऀྙཧʹ൓͠ͳ͍ߦಈΛٻΊ·͢ɻ

    View Slide

  11. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ͓͠ͳ͕͖
    ‣ $IBQUFS͍·ͷʮ8FCηΩϡϦςΟʯͱ͸
    ‣ 8FCηΩϡϦςΟͳΔ޿େͳྖҬͷதͷԿΛຊߨ͕ٛऔΓѻ͏ͷ͔Λ໌ྎʹ͠·͢ɻ
    ‣ $IBQUFSҰ؏ੑΛอͪͳ͕Βͭͳ͛Δ
    ‣ $IBQUFSͰಋೖ͢Δ؍఺ͷҰͭͰ͋Δɺιϑτ΢ΣΞؒͷҰ؏ੑʢ$SPTTTPGUXBSF
    *ODPOTJTUFODZʣʹ͍ͭͯऔΓѻ͍·͢ɻ
    ‣ $IBQUFSαΠυνϟωϧ߈ܸͷجૅ
    ‣ $IBQUFSͰಋೖ͢Δ؍఺ͷҰͭͰ͋Δɺ8FCΞϓϦέʔγϣϯͷαΠυνϟωϧ଱
    ੑʹ͍ͭͯऔΓѻ͍·͢ɻ

    View Slide

  12. ͍·ͷʮ8FCηΩϡϦςΟʯͱ͸
    $IBQUFS

    View Slide

  13. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ͍·ͷʮ8FCηΩϡϦςΟʯͱ͸
    ‣ 8FCηΩϡϦςΟྖҬͷؔ৺Λ੔ཧ͍ͯͨ͘͠Ίʹ͸ɺݱঢ়ͷ8FCͷ֓؍Λ
    ʢେࡶ೺Ͱྑ͍ͷͰʣ௫ΜͰ͓͘ඞཁ͕͋Δɻ
    ‣ ͦ͜Ͱɺ͔͜͜Β͸ɺ͜ͷΑ͏ͳྲྀΕͰ࿩ΛਐΊ͍ͯ͘ɻ
    ‣ ·ͣ8FCશମΛ޿͘ݟ౉͢ʢ4FDUJPOʣɻ
    ‣ ݟ౉ͨ͠ཁૉͷ͏ͪɺαʔόαΠυ8FCγεςϜʹ͋ͨΔ෦෼ͷߏ੒ཁૉΛɺຊߨٛ
    ͰඞཁͳൣғͰ֬ೝ͢Δʢ4FDUJPOd4FDUJPOʣɻ
    ‣ ͦͷ্Ͱɺ8FCηΩϡϦςΟʹ͍ͭͯߟ͑Δʢ4FDUJPOʣɻ

    View Slide

  14. 8FCΛΈΘͨ͢
    $IBQUFS4FDUJPO

    View Slide

  15. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FCΛΈΘͨ͢
    ‣ 8FCΞϓϦέʔγϣϯ͸ɺΫϥΠΞϯταΠυͷγεςϜʢFH8FCϒϥ΢
    βʣͱαʔόαΠυͷγεςϜʢFH8FCαʔό΍ΞϓϦέʔγϣϯαʔόʣ
    ͕௨৴͠ɺڠௐಈ࡞͢Δ͜ͱʹΑΓ੒Γཱ͍ͬͯΔɻ

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ

    View Slide

  16. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ 8FCϒϥ΢β্Ͱ͸ଟ͘ͷ8FCϖʔδ͕ฒߦͯ͠؅ཧɾॲཧ͞Ε͍ͯΔɻ
    ‣ ۙ೥͸4JOHMF1BHF"QQMJDBUJPOʢ41"
    ͱݺ͹ΕΔܗଶͷ8FCϖʔδ͕૿͑ɺ༷ʑͳ
    ϩδοΫ͕8FCϖʔδʹࡌΔΑ͏ʹͳ͖͍ͬͯͯΔɻ
    ΫϥΠΞϯταΠυ8FCγεςϜ

    8FCϒϥ΢β

    View Slide

  17. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ αʔόαΠυͷ8FCγεςϜ΋αʔόαΠυ8FCΞϓϦέʔγϣϯͱɺϛυ
    ϧ΢ΣΞʢσʔλετΞ΍ϩʔυόϥϯα౳ʣ͕͏·͘ڠௐಈ࡞͢Δ͜ͱʹΑΓ
    ࣮ݱ͞Ε͍ͯΔɻ
    αʔόαΠυ8FCγεςϜ

    ϛυϧ΢ΣΞ αʔόαΠυ8FCΞϓϦέʔγϣϯ
    αʔόαΠυ8FCγεςϜ

    View Slide

  18. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    αʔόαΠυ8FCγεςϜ
    ΋͏͢͜͠ϒϨΠΫμ΢ϯ͢Δ

    ͲΜͳ΋ͷ͕͋Δʁ
    ˠ4FDUJPOͰ֬ೝ
    ϛυϧ΢ΣΞ αʔόαΠυ8FCΞϓϦέʔγϣϯ
    ͲΜͳ;͏ʹ࡞Δʁ
    ˠ4FDUJPOͰ֬ೝ
    Ͳ͏΍ͬͯಈ͔͢ʁ
    ˠ4FDUJPOͰ֬ೝ

    View Slide

  19. αʔόαΠυ8FCΞϓϦέʔγϣϯͷ
    ΞʔΩςΫνϟ
    $IBQUFS4FDUJPO

    View Slide

  20. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    యܕతͳΞʔΩςΫνϟ
    ‣ αʔόαΠυ8FCΞϓϦέʔγϣϯͷయܕతͳΞʔΩςΫνϟ
    ‣ .POPMJUIJD"SDIJUFDUVSF
    ‣ ෳ਺ͷػೳΛେ͖ͳͭͷΞϓϦέʔγϣϯͱͯ͠ߏ੒͢ΔΞʔΩςΫνϟ
    ‣ .JDSPTFSWJDFT"SDIJUFDUVSF
    ‣ ۀ຿ػೳ΍νʔϜΛ୯Ґͱͯ͠ಠཱͨ͠αʔϏεʢ.JDSPTFSWJDFʣΛ࡞ΓɺͦΕΒ
    ͷ૯ମͱͯ͠ΞϓϦέʔγϣϯΛߏ੒͢ΔΞʔΩςΫνϟ


    .POPMJUIJD"SDIJUFDUVSF .JDSPTFSWJDFT"SDIJUFDUVSF

    View Slide

  21. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ ෳ਺ͷػೳ͕ͭͷΞϓϦέʔγϣϯʹ٧Ί͜·ΕΔΞʔΩςΫνϟͷ͜ͱɻ
    .POPMJUIJD"SDIJUFDUVSF

    ػೳ
    ػೳ
    ػೳ
    ػೳ ػೳ
    ػೳ
    αʔόαΠυ8FCΞϓϦέʔγϣϯ
    ‣ ༷ʑͳཁૉ͔ΒͳΔ
    ‣ ϓϨθϯςʔγϣϯ૚
    ‣ ϏδωεϩδοΫ૚
    ‣ σʔλετΞΛऔΓѻ͏૚
    ‣ ʜ

    View Slide

  22. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    .POPMJUIJD"SDIJUFDUVSF
    ߏ੒ͷΠϝʔδ

    ػೳ
    ػೳ
    ػೳ
    ػೳ ػೳ
    ػೳ
    αʔόαΠυ8FCγεςϜ
    αʔόαΠυ8FCΞϓϦέʔγϣϯ
    ϩʔυόϥϯα౳
    σʔλετΞ౳

    View Slide

  23. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ ෳ਺ͷػೳ͕ͭͷΞϓϦέʔγϣϯʹ٧Ί͜·ΕΔΞʔΩςΫνϟͷ͜ͱɻ
    .POPMJUIJD"SDIJUFDUVSF
    ՝୊


    ػೳ
    ػೳ
    ػೳ
    ػೳ ػೳ
    ػೳ
    αʔόαΠυ8FCΞϓϦέʔγϣϯ
    ‣ ༷ʑͳཁૉ͔ΒͳΔ
    ‣ ϓϨθϯςʔγϣϯ૚
    ‣ ϏδωεϩδοΫ૚
    ‣ σʔλετΞΛऔΓѻ͏૚
    ‣ ʜ
    ίʔυϕʔε͕༰қʹ
    ංେԽͯ͠͠·͏

    View Slide

  24. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    .POPMJUIJD"SDIJUFDUVSF
    ՝୊


    ػೳ
    ػೳ
    ػೳ
    ػೳ ػೳ
    ػೳ
    αʔόαΠυ8FCγεςϜ
    αʔόαΠυ8FCΞϓϦέʔγϣϯ
    σʔλετΞ౳
    ϩʔυόϥϯα౳
    εέʔϧ͚ͤͨ͞Ε͹શମΛ
    ಈ࡞ͤ͞ͳͯ͘͸͍͚ͳ͍

    View Slide

  25. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ‣ ۀ຿ػೳ΍νʔϜΛ୯Ґͱͯ͠ಠཱͨ͠αʔϏεʢ.JDSPTFSWJDFʣΛ࡞Γɺͦ
    ΕΒͷ૯ମͱͯ͠ΞϓϦέʔγϣϯΛߏ੒͢Δɺͱ͍͏ΞʔΩςΫνϟͷ͜ͱɻ
    ‣ Ͳ͏෼ׂʢ%FDPNQPTFʣ͢Δͷ͕࠷ద͔͸ॾઆ͋Δɻ

    .JDSPTFSWJDF .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF

    View Slide

  26. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    "1*(BUFXBZ1BUUFSOʹΑΔߏ੒ͷΠϝʔδ

    αʔόαΠυ8FCγεςϜ
    ڞ༗σʔλετΞ
    ήʔτ΢ΣΠ
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF

    View Slide

  27. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ‣ ۀ຿ػೳ΍νʔϜΛ୯Ґͱͯ͠ಠཱͨ͠αʔϏεʢ.JDSPTFSWJDFʣΛ࡞Γɺͦ
    ΕΒͷ૯ମͱͯ͠ΞϓϦέʔγϣϯΛߏ੒͢Δɺͱ͍͏ΞʔΩςΫνϟɻ
    ‣ Ͳ͏෼ׂʢ%FDPNQPTFʣ͢Δͷ͕࠷ద͔͸ॾઆ͋Δɻ

    .JDSPTFSWJDF .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    ίʔυϕʔε͕શମతʹૄ݁
    ߹ʹͳΔ͜ͱ͕ظ଴Ͱ͖Δ

    View Slide

  28. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ‣ ۀ຿ػೳ΍νʔϜΛ୯Ґͱͯ͠ಠཱͨ͠αʔϏεʢ.JDSPTFSWJDFʣΛ࡞Γɺͦ
    ΕΒͷ૯ମͱͯ͠ΞϓϦέʔγϣϯΛߏ੒͢Δɺͱ͍͏ΞʔΩςΫνϟɻ
    ‣ Ͳ͏෼ׂʢ%FDPNQPTFʣ͢Δͷ͕࠷ద͔͸ॾઆ͋Δɻ

    .JDSPTFSWJDF .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    খ͍͞୯ҐͷσϓϩΠ͕
    ͠΍͘͢ͳΔ

    View Slide

  29. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    "1*(BUFXBZ1BUUFSOʹΑΔߏ੒ͷΠϝʔδ

    αʔόαΠυ8FCγεςϜ
    ڞ༗σʔλετΞ
    ήʔτ΢ΣΠ
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    ͏·͘΍Ε͹.JDSPTFSWJDF
    ୯ҐͰεέʔϧͤ͞ΒΕΔ

    View Slide

  30. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ۜͷ஄ؙ͸ͳ͍
    ‣ .POPMJUIJD"SDIJUFDUVSFΑΓ.JDSPTFSWJDFT"SDIJUFDUVSFΛ࠾༻͢Δ৔߹ͷ
    ΄͏͕ͭΒ͍͜ͱ΋໪࿦͋Δɻ
    ‣ τϥϯβΫγϣϯ؅ཧ
    ‣ ͨ͘͞ΜͷΠϯλʔϑΣΠεఆٛ
    ‣ αʔϏεؒͷґଘؔ܎ͷ؅ཧ
    ‣ FUD
    ‣ ؔ৺ͷ෼཭ʹΑΔޮ཰Խͱɺ෼཭ͷͨΊͷੜ͡ΔΦʔόʔϔουͷͤΊ͍͕͗͋
    ൃੜ͢Δ͜ͱΛɺ࠾༻࣌ʹ͸೦಄ʹஔ͘ͱΑ͍͔΋͠Εͳ͍ɻ
    ‣ 8FCͷจ຺Ͱͷ.POPMJUIJD"SDIJUFDUVSFWT.JDSPTFSWJDFT"SDIJUFDUVSFͱ͍
    ͏࿩୊ʹݶΒͣɺʮૄ݁߹ʯΛ࣮ݱ͠Α͏ͱ͢Δͱɺେମಉ͡Α͏ͳนʹͿ͔ͭΔʜ

    View Slide

  31. αʔόαΠυ8FCγεςϜͷ
    ࣮ߦ؀ڥ
    $IBQUFS4FDUJPO

    View Slide

  32. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ ࡞ͬͨΞϓϦέʔγϣϯ͸ɺಈ͔ͯ͠Α͏΍͘໾ʹཱͭɻ
    ‣ ಈ͔ͨ͢Ίʹ͸ʜ
    ‣ ಈ͔ͨ͢Ίͷ౔୆ʢҎ࣮߱ߦج൫ͱݺͿʣ͕ඞཁ
    ‣ ϛυϧ΢ΣΞ͕ඞཁ
    ΞϓϦέʔγϣϯΛಈ͔ͨ͢Ίʹ

    ϛυϧ΢ΣΞ αʔόαΠυ8FCΞϓϦέʔγϣϯ
    αʔόαΠυ8FCγεςϜ

    View Slide

  33. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ࣮ߦج൫Λ͔Β४උ͢Δͷ͸େม

    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    ؔ਺ ؔ਺
    ‣ αʔϏεΛӡ༻͢ΔͨΊʹϋʔυ΢ΣΞ͔Β༻ҙ͢Δ৔߹ʜ
    ‣ ૿΍͢ͷʹ΋ݮΒ͢ͷʹ΋ʹؾ߹͕ඞཁʹͳΔɻ
    ‣ ૿΍ͦ͏ʹ΋ߪೖʹ͕͔͔࣌ؒΔ
    ‣ ݮΒͨ͢Ίʹ͸ద੾ʹഇغ͢Δඞཁ͕͋Δ
    ‣ ʮյΕ͏Δʯͱ͍͏ҙࣝΛڧ࣋ͨ͘Ͷ͹ͳΒͳ͍ɻ
    ‣ ؒҧͬͯػثʹίʔώʔΛ͜΅͢ͱյΕΔ
    ‣ ಈ͔͠ଓ͚͍ͯΔ͚ͩͰ΋յΕΔ
    ‣ ͏·͘΍͍ͬͯ͘ʹ͸े෼ͳઐ໳ੑͱܦݧ͕ඞཁͰ͋Δɻ
    ‣ ͭΒ͍
    ˞Ϋϥ΢υ؀ڥʹ΋େن໛ো֐͸ͨ·ʹ͋ΔͷͰɺʮյΕΔʯ͜ͱΛҙࣝ͠ͳͯ͘͸͍͚ͳ͍ͷ͸
    ෺ཧػثΛऔΓѻ͏৔߹ಛ༗ͷͭΒ͞ɺͱ͍͏Θ͚Ͱ͸ͳ͍͕ʜ

    View Slide

  34. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ࣮ߦج൫ͷԾ૝Խɾந৅Խͷਐߦ
    ‣ ௕೥ʹ౉ͬͯΞϓϦέʔγϣϯͷ࣮ߦج൫ͷԾ૝Խɾந৅Խ͕ਐΊΒΕ͖ͯͨɻ
    ‣ *OGSBTUSVDUVSFBTB4FSWJDF *BB4

    ‣ 1MBUGPSNBTB4FSWJDF 1BB4

    ‣ $POUBJOFSBTB4FSWJDFʢ$BB4ʣ
    ‣ 'VODUJPOBTB4FSWJDF 'BB4

    ‣ ࠓͰ͸ඇৗʹखܰʹ࣮ߦج൫͕࡞੒ɾഁغͰ͖ΔΑ͏ʹͳ͍ͬͯΔɻ

    View Slide

  35. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    9BB4͕ఏڙ͢ΔൣғʢΠϝʔδʣ

    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    *BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    $BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    1BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    'BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺

    View Slide

  36. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ࣮ߦج൫ͷԾ૝Խɾந৅Խͷਐߦ

    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    *BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    $BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    1BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    'BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ͸9BB4ఏڙଆ͕
    ؅ཧͯ͘͠ΕΔˠخ͍͠ʂ

    View Slide

  37. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ࣮ߦج൫ͷԾ૝Խɾந৅Խͷਐߦ

    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    *BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    $BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    1BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ϋʔυ΢ΣΞ
    04
    ϥϯλΠϜ
    ΞϓϦέʔγϣϯ
    'BB4͕ఏڙ͢Δج൫
    ؔ਺ ؔ਺
    ͍Ζ͍Ζ؅ཧͯ͘͠ΕΔͷͰɺࣗ
    ෼͕औΓѻ͏΂͖ϨΠϠ͚ͩʹؔ
    ৺ΛڱΊΒΕΔˠخ͍͠ʂ

    View Slide

  38. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ΠϯϑϥετϥΫνϟͷίʔυԽ
    ‣ Ծ૝Խɾந৅Խ͞Εɺϋʔυ΢ΣΞͷ
    ΍Γ͘Γ͕Ӆṭ͞ΕͨΞϓϦέʔγϣ
    ϯ࣮ߦج൫͸ɺ΄΅७ਮͳιϑτ΢Σ
    Ξͱಉ౳ʹऔΓѻ͑ΔΑ͏ʹɻ
    ‣ ίϚϯυҰͭͰԾ૝ϚγϯΠϯελϯε
    Λ֬อͨ͠Γʜ
    ‣ ίʔυʹΑΓΠϯϑϥετϥΫνϟͷߏ
    ੒Λهड़ɾ؅ཧͨ͠Γʜ
    ‣ ॴҦ*OGSBTUSVDUVSFBT$PEFʢ*B$ʣ
    ‣ ຊߨٛͷԋश؀ڥ΋5FSSBGPSNͰߏ
    ੒͕هड़ɾ؅ཧ͞Ε͍ͯΔɻ

    resource "google_container_cluster"
    "challenge_cluster" {
    name = "challenges"
    location = "asia-northeast1"
    initial_node_count = 1
    cluster_autoscaling {
    enabled = true
    resource_limits {
    resource_type = "cpu"
    minimum = 3
    maximum = 32
    }
    resource_limits {
    resource_type = "memory"
    minimum = 3
    maximum = 32
    }
    }
    ...

    View Slide

  39. αʔόαΠυ8FCγεςϜͷ
    ϛυϧ΢ΣΞ
    $IBQUFS4FDUJPO

    View Slide

  40. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ΞϓϦέʔγϣϯΛࢧ͑Δଘࡏ
    ‣ ΞϓϦέʔγϣϯ͸ଟ͘ͷϛυϧ΢ΣΞʹࢧ͑ΒΕͯಈ࡞͢Δɻ
    ‣ σʔλετΞʢ,743%#ʣ
    ‣ ϩʔυόϥϯα
    ‣ 8FC"QQMJDBUJPO'JSFXBMM
    ‣ FUD

    ϛυϧ΢ΣΞ αʔόαΠυ8FCΞϓϦέʔγϣϯ
    αʔόαΠυ8FCγεςϜ

    View Slide

  41. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ϛωʔδυͳϛυϧ΢ΣΞ
    ‣ ϚωʔδυͳܗͰఏڙ͞Ε͍ͯΔϛυϧ΢ΣΞ΋ͨ͘͞Μ͋Δɻ
    ‣ σʔλετΞͷྫ
    ‣ $MPVE42-΍"NB[PO3%4ͷΑ͏ͳ3%#
    ‣ $MPVE%BUBTUPSF΍%ZOBNP%#ͷΑ͏ͳ,74
    ‣ FUD
    ‣ ηΩϡϦςΟؔ࿈ͷػೳΛऔΓѻͬͯ͘ΕΔϛυϧ΢ΣΞͷྫ
    ‣ ΞΫηε੍ޚʹศརͳ$MPVE*EFOUJUZ"XBSF1SPYZ
    ‣ "848"'ͷΑ͏ͳ8"'
    ‣ FUD

    View Slide

  42. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ʮ૊Έ߹ΘͤΔ͜ͱͰ࡞Δʯ
    ‣ ·ͱΊΔͱɺΞϓϦέʔγϣϯͷ࣮ߦج൫΍ϛυϧ΢ΣΞ͸ʜ
    ‣ ϋʔυ΢ΣΞͷ੍໿͕ʢΫϥ΢υϕϯμʹΑΓʣ͏·͘Ӆṭ͞ΕΔΑ͏ʹͳͬͨɻ
    ‣ ༰қʹมߋ΍औࣺબ୒͕Ͱ͖ΔΑ͏ʹͳͬͨɻ
    ‣ ΞϓϦέʔγϣϯ։ൃͱ͍ۙํ๏Ͱߏ੒Ͱ͖ΔΑ͏ʹͳͬͨɻ
    ‣ ݁Ռɺʮ૊Έ߹ΘͤΔ͜ͱͰ࡞ΔʯతΞϓϩʔν͕औΓ΍͘͢ͳͬͨɻ
    ‣ ݱ୅ͷ8FCΞϓϦέʔγϣϯʹٻΊΒΕ͍ͯΔʮ౰ͨΓલ඼࣭ʯʢDGङ໺Ϟσϧʣ͸ߴ͍ɻ
    ‣ ྫෳࡶͳػೳཁ݅ ߴՄ༻ੑ ߴ଎ͳಈ࡞
    ‣ શ෦͔Β࡞ΕΔͷ͸͔͍͍͕ͬ͜ɺߴ͍ʮ౰ͨΓલ඼࣭ʯΛୡ੒͢Δͷ͸ࠔ೉ɻ
    ‣ ৴པͰ͖Δ΋ͷΛ૊Έ߹ΘͤΔ͜ͱͰɺϕʔεͷʮ౰ͨΓલ඼࣭ʯΛఈ্͛͠ͳ͕Βɺ
    ࣗ෼͕࣮ݱ͢Δ΂͖͜ͱʹ஫ྗ͢Δ͜ͱ͕Ͱ͖Δʢخ͍͠ʂʣ

    View Slide

  43. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ʮܗͰߟ͑ΔαʔόʔϨεઃܭʯ

    IUUQTBXTBNB[PODPNKQTFSWFSMFTTQBUUFSOTTFSWFSMFTTQBUUFSO

    View Slide

  44. 8FCηΩϡϦςΟ
    $IBQUFS4FDUJPO

    View Slide

  45. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FCηΩϡϦςΟ
    ‣ ٞ࿦ͷൣғΛ໌֬ʹ͢ΔͨΊʹɺҎޙ͸ʮ8FCηΩϡϦςΟʯͱ͍͏ྖҬΛɺ
    ҎԼͷྖҬʹ෼͚ͯߟ͑Δɻ
    ‣ ΫϥΠΞϯταΠυ8FCγεςϜͷηΩϡϦςΟ
    ‣ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ

    View Slide

  46. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FCηΩϡϦςΟ
    ‣ ٞ࿦ͷൣғΛ໌֬ʹ͢ΔͨΊɺҎޙ͸ʮ8FCηΩϡϦςΟʯͱ͍͏ྖҬΛɺҎ
    ԼͷྖҬʹ෼͚ͯߟ͑Δɻ
    ‣ ΫϥΠΞϯταΠυ8FCγεςϜͷηΩϡϦςΟ
    ‣ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ
    ͪ͜Β͸ࠓ೔ͷߨٛͰ͸ׂѪ

    View Slide

  47. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FCηΩϡϦςΟ
    ‣ ٞ࿦ͷൣғΛ໌֬ʹ͢ΔͨΊɺҎޙ͸ʮ8FCηΩϡϦςΟʯͱ͍͏ྖҬΛɺҎ
    ԼͷྖҬʹ෼͚ͯߟ͑Δɻ
    ‣ ΫϥΠΞϯταΠυ8FCγεςϜͷηΩϡϦςΟ
    ‣ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ
    ͪ͜ΒΛηΩϡΞʹอͭʹ͸Ͳ͏͢Ε͹ʁ

    View Slide

  48. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ
    ΞϓϦέʔγϣϯΞʔΩςΫνϟͷมԽΛ࠶ߟ͢Δ

    αʔόαΠυ8FCγεςϜ
    ڞ༗σʔλετΞ
    ήʔτ΢ΣΠ
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    ϙΠϯτ੹຿ͷ෼ࢄ

    View Slide

  49. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ
    ΞϓϦέʔγϣϯΞʔΩςΫνϟͷมԽΛ࠶ߟ͢Δ

    αʔόαΠυ8FCγεςϜ
    ڞ༗σʔλετΞ
    ήʔτ΢ΣΠ
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    .JDSPTFSWJDF
    ϙΠϯτ࿈ܞͷ૿Ճ

    View Slide

  50. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ ΞϓϦέʔγϣϯͷ࣮ߦج൫΍ϛυϧ΢ΣΞ͸ʜ
    ‣ ϋʔυ΢ΣΞͷ੍໿͕ʢΫϥ΢υϕϯμʹΑΓʣ͏·͘Ӆṭ͞ΕΔΑ͏ʹͳͬͨɻ
    ‣ ༰қʹมߋ΍औࣺબ୒͕Ͱ͖ΔΑ͏ʹͳͬͨɻ
    ‣ ΞϓϦέʔγϣϯ։ൃͱ͍ۙํ๏Ͱߏ੒Ͱ͖ΔΑ͏ʹͳͬͨɻ
    ‣ ݁Ռɺʮ૊Έ߹ΘͤΔ͜ͱͰ࡞ΔʯతΞϓϩʔν͕औΓ΍͘͢ͳͬͨʂ
    ‣ ݱ୅ͷ8FCΞϓϦέʔγϣϯʹٻΊΒΕ͍ͯΔʮ౰ͨΓલ඼࣭ʯ͸ߴ͍ɻ
    ‣ ྫෳࡶͳػೳཁ݅ ߴՄ༻ੑ ߴ଎ͳಈ࡞
    ‣ ࢀߟङ໺Ϟσϧ
    ‣ શ෦͔Β࡞ΕΔͷ͸͔͍͍͕ͬ͜ɺߴ͍ʮ౰ͨΓલ඼࣭ʯΛୡ੒͢Δͷ͸ࠔ೉ɻ
    ‣ ৴པͰ͖Δ΋ͷΛ૊Έ߹ΘͤΔ͜ͱͰɺϕʔεͷʮ౰ͨΓલ඼࣭ʯΛఈ্͛͠ͳ͕Βɺ
    ࣗ෼͕࣮ݱ͢Δ΂͖͜ͱʹ஫ྗ͢Δ͜ͱ͕Ͱ͖Δɻ
    αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ
    ߏ੒ɾ࣮ߦ؀ڥͷมԽΛ࠶ߟ͢Δ

    ϙΠϯτ࿈ܞͷ૿ՃϙΠϯτಈ࡞ج൫ͷଟ༷Խ

    View Slide

  51. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ
    มԽ͔Β࠶ߟ͢Δ
    ‣ αʔόαΠυ8FCγεςϜ͕ܴ͑ͨมԽ
    ‣ ੹຿ͷ෼ࢄʜݩདྷαʔόαΠυ8FCΞϓϦέʔγϣϯͷ࣮૷தͰըҰత
    ʹऔΓѻΘΕ͍ͯͨ੹຿͕ɺ෼ࢄ͢ΔΑ͏ʹͳͬͨɻ
    ‣ ࿈ܞͷ૿Ճʜͭͷૢ࡞ͷ࣮ݱͷͨΊʹɺෳ਺ͷιϑτ΢ΣΞ͕ؒ࿈ܞ͠
    ͯಈ͘͜ͱ͕૿͖͑ͯͨɻ
    ‣ ಈ࡞ج൫ͷଟ༷ԽʜΞϓϦέʔγϣϯͷಈ࡞ج൫͕ɺ։ൃऀ͕༰қʹऔΓ
    ѻ͑Δର৅΁ͱมԽͨ͠ɻ
    ‣ ͦ͜Ͱɺ͜ͷྖҬͷηΩϡϦςΟΛɺҎԼͷ؍఺ʹ෼ׂͯ͠ߟ͑ͯΈΑ͏ɻ
    ‣ ηΩϡΞʹͭ͘Δ
    ‣ ηΩϡΞʹͭͳ͛Δ
    ‣ ηΩϡΞʹ͏͔͢͝

    View Slide

  52. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ηΩϡΞʹͭ͘Δ
    ‣ ·ͣ͸ίϯϙʔωϯτͷ֤ʑ͕ηΩϡΞʹ࡞ΒΕ͍ͯΔ͜
    ͱ͕ɺ͢΂ͯͷେલఏɻ
    ‣ ·ͣ͸ʰମܥతʹֶͿ҆શͳ8FCΞϓϦέʔγϣϯͷ࡞Γ
    ํʱʢ௨শಙؙຊʣΛҰ௨Γಡ΋͏ɻ
    ‣ 8FCʹ·ͭΘΔجૅతͳ੬ऑੑΛɺ͜ͷߨٛ࣌ؒͷதͰҰ௨Γ
    औΓѻ͏ͷ͸೉͍͠ͷͰʜ
    ‣ ຊߨٛͰ͸ۙ೥੝Γ্͕͍ͬͯΔτϐοΫͱͯ͠ɺαΠυ
    νϟωϧ߈ܸʹ͍ͭͯͷΈऔΓѻ͏ɻ

    .JDSPTFSWJDF ػೳ

    View Slide

  53. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ηΩϡΞʹͭͳ͛Δ
    ‣ ࡞ͬͨίϯϙʔωϯτಉ࢜͸ηΩϡΞʹͭͳ͛ΒΕ͍ͯΔ͔Ͳ͏͔ɺͱ͍͏؍఺
    ΋ඇৗʹॏཁʹͳ͖͍ͬͯͯΔɻ
    ‣ ຊߨٛͰ͸ɺʮηΩϡΞʹͭͳ͛Δʯͱ͍͏ߦҝΛɺ͞ΒʹҎԼͷͭʹϒϨΠ
    Ϋμ΢ϯͯ͠ߟ͍͑ͯ͘ɻ
    ‣ ηΩϡΞͳܦ࿏Ͱͭͳ͛Δ
    ‣ Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ

    .JDSPTFSWJDF
    .JDSPTFSWJDF
    ϛυϧ΢ΣΞ ΞϓϦέʔγϣϯ

    View Slide

  54. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ηΩϡΞʹͭͳ͛Δ
    ηΩϡΞͳܦ࿏Ͱͭͳ͛Δ
    ‣ αʔϏεؒͷ௨৴ΛͲ͏ηΩϡΞʹߦ͏͔ɺ΋ඇৗʹॏཁͳ؍఺ɻ
    ‣ αʔϏεؒͷ௨৴ܦ࿏ʹ͸౪ௌɾվ͟ΜΛૂ͏߈ܸऀ͕͍Δ͔΋ʜ
    ‣ ͭͷίϯϙʔωϯτ͕৵֐͞ΕΔ͜ͱͰɺࢥΘ͵ͱ͜Ζ͔Β௨৴͕ߦͳΘ
    ΕΔ͔΋͠Εͳ͍ʜ
    ‣ ຊߨٛͰ͸औΓѻΘͳ͍͕ɺ༷ʑͳϓϨΠϠʔ͕ؤு͍ͬͯΔͷͰɺ௥͍͔͚ͯ
    ΈΔͱָ͍͔͠΋͠Εͳ͍ɻ
    ‣ ྫ*TUJPͳͲͷ4FSWJDF.FTIϓϩμΫτͳͲ
    ‣ ͍ΘΏΔθϩτϥετϞσϧ͕ࠜఈʹ͋Δ

    View Slide

  55. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ ͭͷγεςϜͷ࣮ݱʹؔΘΔʜ
    ‣ ࢓༷͕૿͑Δ΄ͲɺͦΕΒͷ࢓༷ؒͷҰ؏ੑ͕໰୊ʹͳΔ͜ͱ΋૿͑Δɻ
    ‣ ιϑτ΢ΣΞ͕૿͑Δ΄ͲɺͦΕΒͷ࣮૷ؒͷҰ؏ੑ͕໰୊ʹͳΔ͜ͱ΋૿͑Δɻ
    ‣ ຊߨٛͰ͸ɺʢ8FCʹؔ࿈ͨ͠ʣҰ؏ੑͷܽ೗͕ট͘໰୊ͷྫͷ͏ͪɺҎԼΛऔΓ্͛Δɻ
    ‣ )5513FRVFTU4NVHHMJOH
    ‣ Ωϟογϡʹؔ࿈ͨ͠߈ܸ
    ‣ ϨεϙϯεϘσΟͷੜ੒ʹؔΘΔॲཧܥͷ࢓༷ࠩΛར༻ͨ͠߈ܸ

    ηΩϡΞʹͭͳ͛Δ
    Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ

    View Slide

  56. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ηΩϡΞʹ͏͔͢͝
    ‣ ಈ࡞ج൫ΛηΩϡΞʹอͭ͜ͱ΍ɺͦͷಈ࡞ج൫ಛ༗ͷηΩϡϦςΟϦεΫΛ೺
    Ѳͭͭ͠ΞϓϦέʔγϣϯΛ։ൃ͢Δɺͱ͍͏ͷ΋ͭͷେࣄͳ؍఺ɻ
    ‣ ࣌ؒͷ౎߹্औΓѻ͑ͳ͍͕ɺۙ೥͸͜ͷτϐοΫʹֶ͍ͭͯͿͨΊͷϚςϦΞ
    ϧ͕ͲΜͲΜ૿͖͍͑ͯͯΔͷͰɺֶͼ΍͘͢ͳ͖͍ͬͯͯΔɻ
    ‣ /*4541ͷΑ͏ͳΨΠυϥΠϯ
    ‣ #VTUB,VCFͷΑ͏ͳϋϯζΦϯϚςϦΞϧ
    ‣ IUUQTDPOUBJOFSTFDVSJUZEFWͷΑ͏ͳจݙ
    ‣ FUD

    View Slide

  57. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    ͍·ͷʮ8FCηΩϡϦςΟʯͱ͸

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ
    ‣ ٞ࿦ͷൣғΛ໌֬ʹ͢ΔͨΊʹɺҎޙ͸ʮ8FCηΩϡϦςΟʯͱ͍͏ྖҬΛɺ
    ҎԼͷྖҬʹ෼͚ͯߟ͑Δɻ
    ‣ ΫϥΠΞϯταΠυ8FCγεςϜͷηΩϡϦςΟ
    ‣ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ

    View Slide

  58. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    ͍·ͷʮ8FCηΩϡϦςΟʯͱ͸

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ
    ‣ ͜ͷηΩϡϦςΟΛҎԼͷ̏؍఺͔Βߟ͑Α͏
    ‣ ηΩϡΞʹͭ͘Δ
    ‣ ηΩϡΞʹͭͳ͛Δ
    ‣ ηΩϡΞʹ͏͔͢͝

    View Slide

  59. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    ͍·ͷʮ8FCηΩϡϦςΟʯͱ͸

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ
    ‣ ͜ͷηΩϡϦςΟΛҎԼͷ̏؍఺͔Βߟ͑Α͏
    ‣ ηΩϡΞʹͭ͘Δ
    ‣ ηΩϡΞʹͭͳ͛Δ
    ‣ ηΩϡΞʹ͏͔͢͝
    ηΩϡΞͳܦ࿏Ͱͭͳ͛Δ
    Ұ؏ੑΛอͬͯͭͳ͛Δ

    View Slide

  60. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    ͍·ͷʮ8FCηΩϡϦςΟʯͱ͸

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ
    ;
    ‣ ͪ͜ΒΛֶͿͨΊͷૉࡐ΋ݱࡏ४උதʜ
    ‣ ϦϦʔεͰ͖ͨΒ5XJUUFS౳ͰҊ಺͠·͢ɻ
    [email protected]

    View Slide

  61. Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ
    $IBQUFS

    View Slide

  62. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ ͭͷγεςϜͷ࣮ݱʹؔΘΔʜ
    ‣ ࢓༷͕૿͑Δ΄ͲɺͦΕΒͷ࢓༷ؒͷҰ؏ੑ͕໰୊ʹͳΔ͜ͱ΋૿͑Δɻ
    ‣ ιϑτ΢ΣΞ͕૿͑Δ΄ͲɺͦΕΒͷ࣮૷ؒͷҰ؏ੑ͕໰୊ʹͳΔ͜ͱ΋૿͑Δɻ
    ‣ ͔͜͜Β͸ɺʢ8FCʹؔ࿈ͨ͠ʣҰ؏ੑͷܽ೗͕ট͘໰୊ͷྫͷ͏ͪɺҎԼΛऔΓ্͛Δɻ
    ‣ )5513FRVFTU4NVHHMJOH
    ‣ Ωϟογϡʹؔ࿈ͨ͠߈ܸ
    ‣ ϨεϙϯεϘσΟͷੜ੒ʹؔΘΔॲཧܥͷ࢓༷ࠩΛར༻ͨ͠߈ܸ
    Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ

    View Slide

  63. )5513FRVFTU4NVHHMJOH
    $IBQUFS4FDUJPO

    View Slide

  64. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    )551ͱ5$1ίωΫγϣϯ
    ‣ )551d)551ͷ௨৴͸5$1ίωΫγϣϯͷ্ͰߦͳΘΕΔɻ
    ‣ ˞)551͸26*$ͱ͍͏6%1্ͷτϥϯεϙʔτϓϩτίϧ͕ผ్༻͍ΒΕΔ
    ‣ )551Ͱ͸ಛผͳϔομΛར༻͠ͳ͍ݶΓɺճϦΫΤετɾϨεϙϯεͷ
    ૹड৴Λ͢Δͨͼʹ5$1ίωΫγϣϯΛੜ੒ɾഁغ͍ͯͨ͠ɻ
    ‣ ͜Ε͸8FCϖʔδͷେ͖ͳύϑΥʔϚϯεωοΫʹͳΔɻ
    ‣ ͍͍ͪͪXBZ)BOETIBLF͕ඞཁͳΘ͚ͳͷͰʜ

    ΫϥΠΞϯτ 8FCαʔό
    ͭͷ5$1ίωΫγϣϯ

    View Slide

  65. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    5$1ίωΫγϣϯͷ࠶ར༻
    ‣ )551ʜConnection: Keep-AliveϔομΛɺίωΫγϣϯͷ࠶ར༻Λࢦ
    ࣔ͢ΔͨΊʹར༻Ͱ͖Δɻ
    ‣ )551ʜ͸͡Ί͔ΒConnection: closeϔομʹΑΓίωΫγϣϯͷऴྃ
    ͕໌ࣔ͞Εͳ͍ݶΓɺίωΫγϣϯ͕࠶ར༻͞ΕΔɻ
    ‣ )551ʜͭͷίωΫγϣϯ಺ʹετϦʔϜͱ͍͏Ծ૝తͳ૒ํ޲௨৴࿏͕ෳ਺
    ઃ͚ΒΕɺ)551ΑΓ΋ߋʹߴ౓ͳܗͰίωΫγϣϯ͕࠶ར༻͞ΕΔɻ

    ΫϥΠΞϯτ 8FCαʔό
    ͭͷ5$1ίωΫγϣϯ

    View Slide

  66. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ίωΫγϣϯ͕࠶ར༻͞Ε͍ͯΔ༷ࢠ
    ԋशʢ0QUJPOBMʣ,FFQ"MJWFͷڍಈΛ֬ೝ͢Δ8JSFTIBSLͰݟͯΈΑ͏

    View Slide

  67. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ίωΫγϣϯ͕࠶ར༻͞Ε͍ͯΔ༷ࢠ
    ԋशʢ0QUJPOBMʣ,FFQ"MJWFͷڍಈΛ֬ೝ͢Δ8JSFTIBSLͰݟͯΈΑ͏

    View Slide

  68. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    $POUFOU-FOHUI5SBOTGFS&ODPEJOH
    ‣ ιέοτதΛྲྀΕΔσʔλͷ͏ͪɺͲ͔͜ΒɾͲ͜·Ͱ͕ϦΫΤετ PSϨεϙ
    ϯε
    ͔Λࣔͨ͢Ίʹ͸ɺҎԼͷΑ͏ͳϔομ͕༻͍ΒΕΔɻ
    ‣ $POUFOU-FOHUIϔομ
    ‣ 5SBOTGFS&ODPEJOHϔομ

    ΫϥΠΞϯτ 8FCαʔό

    View Slide

  69. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    $POUFOU-FOHUI
    ‣ $POUFOU-FOHUIϔομʜϦΫΤετʢPSϨεϙϯεʣͷૹ৴࣌ʹɺϦΫΤε
    τϘσΟ PSϨεϙϯεϘσΟ
    ͷαΠζΛ఻͑ΔͨΊͷϔομ
    ‣ ϦΫΤετ PSϨεϙϯε
    ͕ѹॖ͞Ε͍ͯΔ৔߹͸ѹॖޙͷαΠζ͕ࢦఆ͞ΕΔ
    ‣ ਐ਺Ͱදه͞ΕΔ

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 8
    test\r\n
    aa
    ϘσΟͷ௕͞ͷࢦఆ
    όΠτͷϘσΟ

    View Slide

  70. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ 5SBOTGFS&ODPEJOHϔομ
    ‣ ϦΫΤετ PSϨεϙϯε
    ͷసૹํࣜΛද͢ϔομ
    ‣ DIVOLFE΍EFqBUF౳ɺ͍͔ͭ͘ͷσΟϨΫςΟϒ͕ଘࡏ͢Δ
    ‣ DIVOLFEσΟϨΫςΟϒ͕ࢦఆ͞Εͨ৔߹
    ‣ (16 ਐ਺Ͱදه͞ΕͨνϟϯΫͷαΠζ)\r\n(࣮ࡍͷσʔλ)\r\nΛͭͷνϟϯΫͱͯ͠ɺ
    ίωΫγϣϯ্ʹਵ࣌νϟϯΫ͕ૹ৴͞Ε͍ͯ͘
    ‣ αΠζͷνϟϯΫ͕ϦΫΤετ PSϨεϙϯε
    ͷऴ୺Λҙຯ͢Δ
    5SBOTGFS&ODPEJOH

    POST / HTTP/1.1
    Host: example.com
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    సૹʹDIVOLFEํࣜ
    Λར༻͢Δ͜ͱͷએݴ
    νϟϯΫ

    νϟϯΫ

    View Slide

  71. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    3'$ʹΑΔͱʜ
    ‣ *GBNFTTBHFJTSFDFJWFEXJUICPUIB5SBOTGFS&ODPEJOHBOEB$POUFOU
    -FOHUIIFBEFSpFME UIF5SBOTGFS&ODPEJOHPWFSSJEFTUIF$POUFOU
    -FOHUI IUUQTUPPMTJFUGPSHIUNMSGDTFDUJPOΑΓҾ༻

    ‣ ͭ·Γɺ$POUFOU-FOHUIϔομͱ5SBOTGFS&ODPEJOHϔομ͕ͱ΋ʹࢦఆ͞Ε
    ͨ৔߹͸ɺ$POUFOU-FOHUIϔομ͕ແࢹ͞ΕΔ΂͖Ͱ͋Δɻ

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 18
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    ແࢹ͞ΕΔ
    ར༻͞ΕΔ
    νϟϯΫྻͱͯ͠
    ղऍ͞ΕΔ

    View Slide

  72. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    3'$ʹΑΔͱʜ
    ‣ *GBNFTTBHFJTSFDFJWFEXJUIPVU5SBOTGFS&ODPEJOHBOEXJUIFJUIFSNVMUJQMF
    $POUFOU-FOHUIIFBEFSpFMETIBWJOHEJ⒎FSJOHpFMEWBMVFTPSBTJOHMF
    $POUFOU-FOHUIIFBEFSpFMEIBWJOHBOJOWBMJEWBMVF UIFOUIFNFTTBHF
    GSBNJOHJTJOWBMJEBOEUIFSFDJQJFOU.645USFBUJUBTBOVOSFDPWFSBCMFFSSPS
    *GUIJTJTBSFRVFTUNFTTBHF UIFTFSWFS.645SFTQPOEXJUIB #BE
    3FRVFTU
    TUBUVTDPEFBOEUIFODMPTFUIFDPOOFDUJPO IUUQTUPPMTJFUGPSH
    IUNMSGDTFDUJPOΑΓҾ༻

    ‣ ͭ·ΓɺϦΫΤετதʹ஋ͷҟͳΔ$POUFOU-FOHUIϔομ͕ෳ਺͋Δͱ͖͸ɺ
    #BE3FRVFTU͕ฦ٫͞ΕΔ΂͖ɻ

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 18
    Content-Length: 30
    ஋͕ҟͳΔ

    View Slide

  73. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ͱ΋ɺ࣮ࡍͷιϑτ΢ΣΞͷڍಈ͸ʜ
    ‣ ࣮ࡍͷιϑτ΢ΣΞͷ࣮૷ͷதʹ͸3'$ͱ͸ҟͳΔڍಈΛऔΔ΋ͷ͕͋ͬͨɻ
    ‣ ༷ʑͳιϑτ΢ΣΞʹ$7&͕෇༩͞Ε͍ͯΔɻ
    ‣ ͦ΋ͦ΋3'$ʹ४ڌ͍ͯ͠ͳ͔ͬͨύλʔϯ΍ɺ४ڌ͠Α͏ͱ͍ͯͨ͠΋ͷͷɺ;ͱ͠
    ͨσʔλͷਖ਼نԽͷ຤ʹ3'$४ڌͰͳ͘ͳ͍ͬͯͨύλʔϯ΋͋Δɻ

    Transfer-Encoding:[\x0b]chunked
    Transfer-Encoding : xchunked
    )"1SPYZͰ࢖͑ͨ
    ߈ܸϕΫλ
    (PͷOFUIUUQͰ࢖͑ͨ
    ߈ܸϕΫλ

    View Slide

  74. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ‣ ΫϥΠΞϯτ͔Β࣮ࡍͷ8FCΞϓϦέʔγϣϯʹ౸ୡ͢Δ·Ͱͷؒʹ͸ɺ
    -PBE#BMBODFS౳ͷ)551௨৴Λதܧ͢ΔΑ͏ͳαʔό͕͠͹͠͹ஔ͔ΕΔɻ
    ‣ Ҏ߱Ͱ͸ศ্ٓʜ
    ‣ ࣮ࡍͷ8FCΞϓϦέʔγϣϯαʔόΛʮόοΫΤϯυαʔόʯͱݺͿ
    ‣ ͦͷલͰ)551௨৴Λதܧ͢ΔΑ͏ͳαʔόΛʮϑϩϯτΤϯυαʔόʯͱݺͿ
    ‣ ˞͜ͷลͷݺͼํ͸IUUQTQPSUTXJHHFSOFUSFTFBSDIIUUQEFTZODBUUBDLTSFRVFTUTNVHHMJOHSFCPSO͔ΒआΓͨ΋ͷ
    )551௨৴ͷ࿈࠯

    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό

    View Slide

  75. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    )5513FRVFTU4NVHHMJOHʢ)34

    ‣ )5513FRVFTU4NVHHMJOHʢ)34ʣʜ͋ΔϦΫΤετͷॲཧʹؔ༩͢Δɺ
    ,FFQ"MJWFͳίωΫγϣϯʹΑΓ઀ଓ͞Εͨ)551Λղऍ͢Διϑτ΢ΣΞ
    ʢPSϋʔυ΢ΣΞʣ͕ͨͪɺҰ؏ੑͳ͘)551ϦΫΤετͷऴ୺Λղऍ͢Δ৔
    ߹ʹߦ͑Δɺ͜ͷղऍࠩΛར༻ͨ͠߈ܸͷ͜ͱɻ
    ‣ ݹ͘͸೥ͷ8BUDIpSFͷ8IJUFQBQFSͳͲͰใࠂ͞Ε͍ͯΔɻ
    ࢀߟ8IJUFQBQFSIUUQTXXXDHJTFDVSJUZDPNMJC)5513FRVFTU4NVHHMJOHQEG
    ‣ ೥ͷ1PSU4XJHHFSͷൃදʹΑΓվΊͯ஫໨ΛूΊΔΑ͏ʹͳͬͨɻ
    ࢀߟ1PSU4XJHHFSʹΑΔهࣄIUUQTQPSUTXJHHFSOFUSFTFBSDIIUUQEFTZODBUUBDLT
    SFRVFTUTNVHHMJOHSFCPSO
    ‣ !SFHJMFSPʹΑΔ༷ʑͳใࠂ΋ษڧʹͳΔɻ
    ࢀߟ%&'$0/ͰͷൃදIUUQTXXXZPVUVCFDPNXBUDI WE76J1T.1:

    View Slide

  76. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    5&$-
    ঢ়گઃఆ

    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    5SBOTGFS&ODPEJOHΛ
    ༏ઌ͢ΔͱԾఆ
    $POUFOU-FOHUIΛ
    ༏ઌ͢ΔͱԾఆ
    ͭͷίωΫγϣϯ͕
    ࠶ར༻͞ΕΔͱԾఆ

    View Slide

  77. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    5&$-
    ΫϥΠΞϯτଆ͔ΒᐆດͳϦΫΤετ͕ૹ৴͞Εͨͱ͢Δ

    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    POST / HTTP/1.1
    Host: example.com
    Content-Length: 3
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    ‣ ·ͣࠨͷྫͷΑ͏ͳϦΫΤετ͕ൃ
    ߦ͞Εͨͱ͢Δɻ
    ‣ ͜ͷϦΫΤετ͸ҎԼͷϔομΛ
    ྆ํؚΜͰ͍Δɻ
    ‣ $POUFOU-FOHUIϔομ
    ‣ 5SBOTGFS&ODPEJOHϔομ

    View Slide

  78. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    5&$-
    ϑϩϯτΤϯυαʔό͕5SBOTGFS&ODPEJOHϔομΛ༏ઌͨ͠ͱ͢Δͱʜ

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 3
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    ‣ ϑϩϯτΤϯυαʔό͕ԾఆͲ͓Γ
    5SBOTGFS&ODPEJOHϔομΛ༏ઌ
    ͨ͠ͱ͢Δͱɺ͜ͷϦΫΤετϘ
    σΟͷ͢΂͕ͯόοΫΤϯυαʔό
    ʹ޲͚ͯૹ৴͞ΕΔɻ
    ‣ ͜Ε͸3'$௨ΓͷڍಈͰ͋Δɻ

    View Slide

  79. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    5&$-
    ίωΫγϣϯதʹͭ໨ͷϦΫΤετ͕ૹ৴͞ΕΔ

    POST / HTTP/1.1
    Host: example.com
    Content-Length:3
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    όοΫΤϯυαʔόʹ
    ૹ৴͞ΕΔσʔλ
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό

    View Slide

  80. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    5&$-
    όοΫΤϯυαʔό͕$POUFOU-FOHUIϔομΛ༏ઌͨ͠ͱ͢Δͱʜ

    POST / HTTP/1.1
    Host: example.com
    Content-Length:3
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    όοΫΤϯυαʔό͕
    ॲཧ͢Δൣғ
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    ॲཧ͞Εͣʹ࢒Δൣғ
    όοΫΤϯυαʔό͸ɺPOST ~
    a\r\n·Ͱͷൣғ͕ϦΫΤετͩͱ
    ࢥͬͯॲཧ͢Δ
    Ҏ߱͸ॲཧ͞Εͣʹɺ
    ίωΫγϣϯதʹ࢒Δ

    View Slide

  81. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&
    ΫϥΠΞϯτଆ͔ΒผͷϦΫΤετ͕ૹ৴͞Εͨͱ͢Δ

    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    GET / HTTP/1.1
    Host: example.com
    ‣ Ұํɺઌड़ͷϦΫΤετͷޙʹɺࠨ
    ͷྫͷΑ͏ͳʢͳΜͷม఩΋ͳ͍ʣ
    ϦΫΤετ͕ૹ৴͞Εͨͱ͢Δɻ

    View Slide

  82. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    5&$-
    ίωΫγϣϯதʹͭ໨ͷϦΫΤετ͕ૹ৴͞ΕΔ

    POST / HTTP/1.1
    Host: example.com
    Content-Length:3
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    GET / HTTP/1.1
    ...
    όοΫΤϯυαʔό͕
    ͢Ͱʹॲཧͨ͠ൣғ
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    ॲཧ͞Ε͍ͯͳ͍ൣғ
    ৽͘͠ૹ৴͞Εͨൣғ
    ޙଓͷϦΫΤετ͕
    ϑϩϯτΤϯυαʔό͔Β
    ૹ৴͞ΕΔ

    View Slide

  83. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    5&$-
    ͭ໨ͷϦΫΤετ͕ॲཧ͞ΕΔ

    POST / HTTP/1.1
    Host: example.com
    Content-Length:3
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    GET / HTTP/1.1
    ...
    όοΫΤϯυαʔό͕
    ͢Ͱʹॲཧͨ͠ൣғ
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    όοΫΤϯυαʔό͕
    ଓ͍ͯॲཧ͢Δൣғ
    όοΫΤϯυαʔό͸࢒ͬͨ
    ෦෼͔ΒॲཧΛ࢝ΊΔ

    View Slide

  84. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    5&$-͜͜·ͰͰԿ͕ى͔ͬͨ͜

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 3
    Transfer-Encoding: chunked
    a\r\n
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    POST / HTTP/1.1
    Host: example.com
    Content-Length: 3
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    GET / HTTP/1.1
    ...
    0123456789\r\n
    0\r\n
    GET / HTTP/1.1
    ...
    ϑϩϯτΤϯυαʔό͕தܧͨ͠ϦΫΤετ όοΫΤϯυαʔό͕ॲཧͨ͠ϦΫΤετ
    ʺ

    View Slide

  85. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    5&$-͜͜·ͰͰԿ͕ى͔ͬͨ͜

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 3
    Transfer-Encoding: chunked
    a\r\n
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    POST / HTTP/1.1
    Host: example.com
    Content-Length: 3
    Transfer-Encoding: chunked
    a\r\n
    0123456789\r\n
    0\r\n
    GET / HTTP/1.1
    ...
    0123456789\r\n
    0\r\n
    GET / HTTP/1.1
    ...
    ϑϩϯτΤϯυαʔό͕தܧͨ͠ϦΫΤετ όοΫΤϯυαʔό͕ॲཧͨ͠ϦΫΤετ
    ʺ
    ߈ܸऀ͸ޙଓͷϦΫΤετͷઌ಄ʹ
    ೚ҙͷόΠτྻΛ෇ՃͰ͖Δʂ

    View Slide

  86. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&
    ঢ়گઃఆ

    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    $POUFOU-FOHUIΛ
    ༏ઌ͢ΔͱԾఆ
    5SBOTGFS&ODPEJOHΛ
    ༏ઌ͢ΔͱԾఆ
    ͭͷίωΫγϣϯ͕
    ࠶ར༻͞ΕΔͱԾఆ

    View Slide

  87. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&
    ΫϥΠΞϯτଆ͔ΒᐆດͳϦΫΤετ͕ૹ৴͞Εͨͱ͢Δ

    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    PREFIX
    ‣ ·ͣࠨͷྫͷΑ͏ͳϦΫΤετ͕ൃ
    ߦ͞Εͨͱ͢Δɻ
    ‣ ͜ͷϦΫΤετ͸ҎԼͷϔομΛ
    ྆ํؚΜͰ͍Δɻ
    ‣ $POUFOU-FOHUIϔομ
    ‣ 5SBOTGFS&ODPEJOHϔομ

    View Slide

  88. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&
    ϑϩϯτΤϯυαʔό͕$POUFOU-FOHUIϔομΛ༏ઌͨ͠ͱ͢Δͱʜ

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    PREFIX
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    ‣ ϑϩϯτΤϯυαʔό͕ԾఆͲ͓Γ
    $POUFOU-FOHUIϔομΛ༏ઌͨ͠
    ͱ͢Δͱɺ͜ͷϦΫΤετϘσΟͷ
    ͢΂͕ͯόοΫΤϯυαʔόʹ޲͚
    ͯૹ৴͞ΕΔɻ
    ‣ $POUFOU-FOHUIΛ༏ઌ͢Δͷ͸3'$
    ҧ൓͕ͩɺݱ࣮ੈքͷΞϓϦέʔγϣϯ
    Ͱ΋ྫ͕͍͔ͭ͘ใࠂ͞Ε͍ͯΔʢޙ
    ड़ʣɻ

    View Slide

  89. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&
    ίωΫγϣϯதʹͭ໨ͷϦΫΤετ͕ૹ৴͞ΕΔ

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    PREFIX
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    όοΫΤϯυαʔόʹ
    ૹ৴͞ΕΔσʔλ

    View Slide

  90. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&
    όοΫΤϯυαʔό͕5SBOTGFS&ODPEJOHϔομΛ༏ઌͨ͠ͱ͢Δͱʜ

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    PREFIX
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    όοΫΤϯυαʔό͕
    ॲཧ͢Δൣғ
    ॲཧ͞Εͣʹ࢒Δൣғ
    όοΫΤϯυαʔό͸ɺPOST ~
    0\r\n·Ͱͷൣғ͕ϦΫΤετͩͱ
    ࢥͬͯॲཧ͢Δ
    Ҏ߱͸ॲཧ͞Εͣʹɺ
    ίωΫγϣϯதʹ࢒Δ

    View Slide

  91. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&
    ΫϥΠΞϯτଆ͔ΒผͷϦΫΤετ͕ૹ৴͞Εͨͱ͢Δ

    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    GET / HTTP/1.1
    Host: example.com
    ‣ Ұํɺઌड़ͷϦΫΤετͷޙʹɺࠨ
    ͷྫͷΑ͏ͳʢͳΜͷม఩΋ͳ͍ʣ
    ϦΫΤετ͕ૹ৴͞Εͨͱ͢Δɻ

    View Slide

  92. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&
    ίωΫγϣϯதʹͭ໨ͷϦΫΤετ͕ૹ৴͞ΕΔ

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    PREFIXGET / HTTP/1.1
    ...
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    όοΫΤϯυαʔό͕
    ͢Ͱʹॲཧͨ͠ൣғ
    ॲཧ͞Ε͍ͯͳ͍ൣғ
    ৽͘͠ૹ৴͞Εͨൣғ
    ޙଓͷϦΫΤετ͕
    ϑϩϯτΤϯυαʔό͔Β
    ૹ৴͞ΕΔ

    View Slide

  93. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&
    ͭ໨ͷϦΫΤετ͕ॲཧ͞ΕΔ

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    PREFIXGET / HTTP/1.1
    ...
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    όοΫΤϯυαʔό͕
    ͢Ͱʹॲཧͨ͠ൣғ
    όοΫΤϯυαʔό͕
    ଓ͍ͯॲཧ͢Δൣғ
    όοΫΤϯυαʔό͸࢒ͬͨ
    ෦෼͔ΒॲཧΛ࢝ΊΔ

    View Slide

  94. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&͜͜·ͰͰԿ͕ى͔ͬͨ͜

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    PREFIX
    GET / HTTP/1.1
    ...
    PREFIXGET / HTTP/1.1
    ...
    ϑϩϯτΤϯυαʔό͕தܧͨ͠ϦΫΤετ όοΫΤϯυαʔό͕ॲཧͨ͠ϦΫΤετ
    ʺ

    View Slide

  95. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷͳ͍ղऍ͕ى͜Δͱ͖ͷ໰୊
    $-5&͜͜·ͰͰԿ͕ى͔ͬͨ͜

    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    ΫϥΠΞϯτ
    ϑϩϯτΤϯυ
    αʔό
    όοΫΤϯυ
    αʔό
    POST / HTTP/1.1
    Host: example.com
    Content-Length: 9
    Transfer-Encoding: chunked
    0\r\n
    PREFIX
    GET / HTTP/1.1
    ...
    PREFIXGET / HTTP/1.1
    ...
    ϑϩϯτΤϯυαʔό͕தܧͨ͠ϦΫΤετ όοΫΤϯυαʔό͕ॲཧͨ͠ϦΫΤετ
    ߈ܸऀ͸ࠓճ΋ޙଓͷϦΫΤετͷ
    ઌ಄ʹ೚ҙͷόΠτྻΛ෇ՃͰ͖Δʂ

    View Slide

  96. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    )34߈ܸͷར༻ઌ
    ‣ )34੬ऑੑʹΑΓɺҎԼͷΑ͏ͳૢ࡞͕ՄೳʹͳΔͷͰʜ
    ‣ ޙଓͷϦΫΤετͷϦΫΤετϥΠϯͷ੍ޚɾϔομͷ෇Ճ
    ‣ ޙଓͷϦΫΤετͷϘσΟͷมߋ
    ‣ ౰વɺҎԼͷΑ͏ͳ߈ܸʹར༻Ͱ͖Δɻ
    ‣ ޙଓͷϦΫΤετͷ%P4
    ‣ ࣗ༝౓ͷߴ͍ϦΫΤετͷൃߦ
    ‣ 8FC$BDIF1PJTPOJOH౳ͷΩϟογϡʹؔ࿈ͨ͠߈ܸʢޙड़ʣ
    ‣ ·ͨɺ8FCΞϓϦέʔγϣϯݻ༗ͷػೳΛ࢖ͬͨ߈ܸʹ΋ར༻Ͱ͖Δɻ
    ‣ ϦιʔεΛ౤ߘɾӾཡͰ͖ΔΑ͏ͳػೳ͕͋Δ8FCΞϓϦέʔγϣϯʢFHܝࣔ൘ʣʹ͓͍ͯ
    ͸ɺଞऀͷϦΫΤετ಺༰ΛϦʔΫͰ͖Δ৔߹͕͋Δɻ
    ‣ 944੬ऑੑ͕͋Δ৔߹ɺͦΕΛ᠘ϖʔδʹ༠ಋ͢ΔͳͲͷૢ࡞ͳ͠ʹɺผͷϢʔβͷϒϥ΢β্
    ͰൃՐͤ͞ΒΕΔ৔߹͕͋Δɻ

    View Slide

  97. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    )34߈ܸͷରࡦ
    ‣ )34͸ɺ͋ΔϦΫΤετͷॲཧʹؔ༩͢Δɺ,FFQ"MJWFͳίωΫγϣϯʹΑΓ
    ઀ଓ͞Εͨ)551Λղऍ͢Διϑτ΢ΣΞʢPSϋʔυ΢ΣΞʣ͕ͨͪɺҰ؏ੑ
    ͳ͘)551ϦΫΤετͷऴ୺Λղऍ͢Δ৔߹ʹߦ͑Δɺ͜ͷղऍࠩΛར༻ͨ͠
    ߈ܸͷ͜ͱɺͩͬͨͷͰɺରࡦ͸ʜ
    ‣ ํ਑ϑϩϯτΤϯυαʔόͱόοΫΤϯυؒͷ,FFQ"MJWFͳίωΫγϣϯΛࣺͯΔ
    ‣ ຖճίωΫγϣϯΛுΓ௚͢Α͏ʹ͢Δ
    ‣ )551Λར༻͢Δ
    ‣ ํ਑)551ϦΫΤετͷऴ୺ͷղऍͷҰ؏ੑΛอͭ
    ‣ ར༻͢Διϑτ΢ΣΞΛ࠷৽ʹอͭ
    ‣ ϦΫΤετΛ࠷΋ΫϥΠΞϯτʹ͍ۙҐஔͰਖ਼نԽͯ͠͠·͏
    ‣ )551ϦΫΤετͷॲཧʹؔ༩͢Διϑτ΢ΣΞΛ౷Ұ͢Δʢ͜Ε͸ඇݱ࣮తʣ

    View Slide

  98. Ωϟογϡʹؔ࿈ͨ͠߈ܸ
    $IBQUFS4FDUJPO

    View Slide

  99. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FCʹ͓͚ΔΩϟογϡ
    ‣ Ωϟογϡ˺औಘͨ͠ϦιʔεΛɺΑΓߴ଎ʹΞΫηεͰ͖ΔҐஔʹҰ࣌తʹ
    อଘ͠ɺͦͷޙͦΕΛར༻͢Δ͜ͱͰɺॲཧͷߴ଎Խɾෛՙͷ௿ݮΛਤΔ࢓૊Έɻ
    ‣ 8FCʹ͓͚ΔΩϟογϡ͸ʜ
    ‣ 8FCϒϥ΢βͰ΋ߦͳΘΕΔɻ
    ‣ Ωϟογϡαʔό౳ͷϛυϧ΢ΣΞͰ΋ߦͳΘΕΔɻ
    ‣ ʢαʔόαΠυʣ8FCΞϓϦέʔγϣϯ͕࠷దԽͷͨΊʹߦ͏৔߹΋͋Δɻ

    ΫϥΠΞϯτ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό

    View Slide

  100. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ωϟογϡͷڍಈ
    Ωϟογϡϛε࣌


    ΫϥΠΞϯτ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    ཁٻϦιʔε͕·ͩΩϟογϡ
    ͞Ε͍ͯͳ͍৔߹ʜ
    Ωϟογϡ

    View Slide

  101. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ωϟογϡͷڍಈ
    Ωϟογϡϛε࣌


    ΫϥΠΞϯτ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    όοΫΤϯυαʔό͔Β౰֘Ϧιʔε
    Λऔಘɾอଘͯ͠ʜ
    Ωϟογϡ

    View Slide

  102. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ωϟογϡͷڍಈ
    Ωϟογϡϛε࣌ ̏


    ΫϥΠΞϯτ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    औಘ͖ͯͨ͠ϦιʔεΛฦ٫͢Δ
    Ωϟογϡ

    View Slide

  103. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ωϟογϡͷڍಈ
    Ωϟογϡώοτ࣌


    ΫϥΠΞϯτ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    ཁٻϦιʔε͕طʹΩϟογϡ
    ͞Ε͍ͯΔ৔߹ʜ
    Ωϟογϡ

    View Slide

  104. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ωϟογϡͷڍಈ
    Ωϟογϡώοτ࣌


    ΫϥΠΞϯτ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    ΩϟογϡࡁΈϦιʔεΛฦ٫͢Δ
    Ωϟογϡ

    View Slide

  105. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    $POUFOU%FMJWFSZ/FUXPSLʢ$%/ʣ
    ‣ $%/ੈքதͷ઀ଓ఺ʢ1P1ʣʹΩϟογϡαʔό͕഑ஔ͞ΕͨωοτϫʔΫ
    ‣ ίϯςϯπΛ഑৴͢ΔΦϦδϯαʔόͷϦιʔε͕֤ΩϟογϡαʔόͰอ؅͞ΕΔɻ
    ‣ ΤϯυϢʔβͷ͔ۙ͘ΒΩϟογϡΛ഑৴͢Δ͜ͱͰɺΑΓߴ଎ͳମݧ͕ఏڙͰ͖Δɻ

    View Slide

  106. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ωϟογϡʹؔ͢Δجຊతͳ໰୊
    ‣ ͳΜͰ΋͔ΜͰ΋Ωϟογϡ͢Ε͹͍͍ɺͱ͍͏Θ͚Ͱ͸ͳ͍ɻ
    ‣ Ωϟογϡͷର৅΍༗ޮظݶ͸ʮ͍͍ײ͡ʯʹ؅ཧͯ͠΍Δඞཁ͕͋Δɻ
    ‣ ී௨Ωϟογϡαʔό͸ೝূɾೝՄͷΑ͏ͳߴ౓ͳػೳΛ࣋ͨͳ͍ͷͰɺຊདྷΞΫηε
    ʹೝূɾೝՄΛཁ͢ΔΑ͏ͳϦιʔε͕Ωϟογϡ͞Εͯ͠·͏ͱɺେ͖ͳ৘ใྲྀग़ʹ
    ͭͳ͕ΔՄೳੑ͕͋Δɻ

    ΫϥΠΞϯτ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    Ωϟογϡ
    Ϣʔβݸผͷ
    Ϧιʔε

    View Slide

  107. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ωϟογϡͷ੍ޚ
    ‣ ઌ߲ͷΑ͏ͳࣄ৘͔Β΋࡯͞ΕΔΑ͏ʹɺΩϟογϡ͸੍ޚͰ͖Δɻ
    ‣ ओʹ੍ޚ͍ͨ͜͠ͱ͸ʜ
    ‣ ԿΛΩϟογϡ͢Δ͔
    ‣ Ωϟογϡ͢ΔͳΒɺ͍ͭ·ͰΩϟογϡ͢Δ͔
    ‣ ੍ޚʹ͸ओʹҎԼ͕ར༻͞ΕΔɻ
    ‣ $BDIF$POUSPMϔομ
    ‣ &YQJSFTϔομ
    ‣ Ωϟογϡαʔό΍$%/αʔϏεݻ༗ͷػೳ

    View Slide

  108. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    $BDIF$POUSPMϔομ
    ‣ ˞ຊདྷ͸ϦΫΤετɾϨεϙϯεͷ྆ํͷ੍ޚʹ࢖͑Δϔομ͕ͩɺҎ߱Ͱ͸Ϩεϙϯεத
    ͷ$BDIF$POUSPMϔομʹ͍ͭͯͷΈߟ͑Δɻ
    ‣ $BDIF$POUSPMϨεϙϯεϔομ͸ɺҎԼͷΑ͏ͳσΟϨΫςΟϒΛࣔ͢͜ͱͰɺͦͷϦ
    ιʔεΛΩϟογϡ͢ΔଆͷڍಈΛ੍ޚ͢ΔͨΊʹ༻͍ΒΕΔɻ
    ‣ NBYBHFTNBYBHFʜఴ͑ΒΕͨύϥϝʔλͱͱ΋ʹɺ༗ޮظݶʢඵʣΛࣔ͢
    ‣ OPDBDIFʜΦϦδϯαʔό΁ͷ֬ೝͳ͠Ωϟογϡ͕࠶ར༻͞Εͯ͸ͳΒͳ͍͜ͱΛࣔ͢
    ‣ OPTUPSFʜΩϟογϡ͞Εͯ͸ͳΒͳ͍͜ͱΛࣔ͢
    ‣ QVCMJDQSJWBUFʜϦιʔε͕ಛఆͷݸਓ޲͚Ͱ͋ΔͰ͸ͳ͍͜ͱΛࣔ͢
    ‣ FUD

    Cache-Control: directive, directive, ...

    View Slide

  109. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    &YQJSFTϔομ
    ‣ &YQJSFTϔομͷ஋͸ɺͦͷϦιʔεͷΩϟογϡͷ༗ޮظݶΛࣔ͢ɻ
    ‣ ྫ8FE 0DU(.5
    ‣ $BDIF$POUSPMϔομʹTNBYBHFNBYBHFσΟϨΫςΟϒ͕ࢦఆ͞Ε͍ͯ
    Δ৔߹͸ɺͦͪΒ͕༏ઌ͞Εɺ&YQJSFTϔομ͸ແࢹ͞ΕΔɻ
    ‣ ࢀߟ3'$IUUQTIUUQXHPSHTQFDTSGDIUNMIFBEFSFYQJSFT

    Expires: HTTP-date

    View Slide

  110. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ݻ༗ͷػೳʹΑΔ੍ޚ
    ‣ Ωϟογϡαʔό΍$%/αʔϏε͸ɺΩϟογϡ੍ޚͷͨΊͷಛผͳ࢓૊ΈΛ
    ఏڙ͍ͯ͠Δ৔߹͕͋Δɻ
    ‣ ͦͷΑ͏ͳ࢓૊Έͷྫ
    ‣ 7BSOJTI΍'BTUMZͰ͸7$-ͱ͍͏%4-ͰΩϟογϡػߏΛ੍ޚͰ͖Δɻ
    ‣ $MPVEqBSFͷΩϟογϡ͸1BHF3VMFͱ͍͏ϧʔϧʹΑΓ੍ޚͰ͖Δɻ
    ‣ "LBNBJʹ͓͍ͯ΋؅ཧը໘͔ΒΩϟογϡର৅΍ظݶΛ੍ޚͰ͖Δɻ
    ‣ FUD

    sub vcl_recv {
    if (req.url !~ "^/static") {
    return(pass);
    }
    }
    63-͕TUBUJD͔Β
    ࢝·Βͳ͍৔߹
    Ωϟογϡର৅֎ʹ

    View Slide

  111. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ωϟογϡͷઃఆ͸མͱ͕݀͠ଟ͍

    Ωϟογϡαʔό$%/αʔϏεݻ༗ͷඇࣗ໌ͳڍಈ͕͋Δ

    IUUQTEPDTGBTUMZDPNKBHVJEFTDPOpHVSJOHDBDIJOH
    'BTUMZ͸OPTUPSFͰ΋Ωϟογϡ͢Δ ͸͡Ί͔Β&YQJSF͍ͯ͠ΔΑ͏ͳϨεϙ
    ϯε͕࠶ར༻͞Ε͏ΔʢDG3FRVFTU
    $PMMBQTJOHʣ

    View Slide

  112. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ωϟογϡͷઃఆ͸མͱ͕݀͠ଟ͍

    $BDIF$POUSPMͰͷઃఆΛݻ༗ػೳ͕ΦʔόʔϥΠυ͠͏Δ
    ‣ Ωϟογϡαʔό$%/αʔϏεݻ༗ͷػೳͰΩϟογϡର৅΍༗ޮظݶΛࢦ
    ఆ͢Δͱɺ͜Ε͕$BDIF$POUSPMϔομͷઃఆΑΓ༏ઌ͞ΕΔ৔߹͕͋Δɻ
    ‣ ༏ઌ͞ΕΔ͔͞Εͳ͍͔΋αʔϏεґଘͳͷͰɺߟ͑Δ͜ͱ͕ଟ͍ɻ
    ‣ ·ͨɺޙʹ঺հ͢Δ8FC$BDIF%FDFQUJPOͷҰॿʹ΋ͳ͍ͬͯΔɻ

    IUUQTMFBSOBLBNBJDPNFOVTXFCIFMQJPOPDB(6*%%%'#'%"#&#%$%&IUNM

    View Slide

  113. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ΩϟογϡΛ༻͍ͨඇࣗ໌ͳ߈ܸ
    ‣ ͜͜·Ͱ͸Ωϟογϡઃఆʹؔ͢Δɺҙਤͤ͵ϛεͷ࿩ͩͬͨɻ
    ‣ ҰํɺΩϟογϡػೳΛҙਤతʹར༻͢Δ߈ܸ΋ଘࡏ͍ͯ͠Δɻ
    ‣ 8FC$BDIF1PJTPOJOH
    ‣ ޻෉ͯ͠ѱҙͷ͋ΔσʔλΛΩϟογϡͤ͞ɺͦΕΛଞऀʹ഑৴͢Δ߈ܸ
    ‣ $BDIF1PJTPOJOH%FOJBMPG4FSWJDFʢ$1%P4ʣ
    ‣ ޻෉ͯ͠ΤϥʔϖʔδΛΩϟογϡͤ͞Δ͜ͱʹΑΓαʔϏεͷ%P4Λى͜͢߈ܸ
    ‣ 8FC$BDIF%FDFQUJPOʢ8$%ʣ
    ‣ ຊདྷΩϟογϡ͞Εͳ͍΂͖Ͱ͋ΔϢʔβͷσʔλΛ޻෉ͯ͠Ωϟογϡͤ͞ɺͦ
    ΕΛ౪ΈݟΔ߈ܸ

    View Slide

  114. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FC$BDIF1PJTPOJOH
    ‣ 8FC$BDIF1PJTPOJOHʜѱҙͷ͋ΔίϯςϯπΛʢͳΜͱ͔ͯ͠ʣΩϟογϡ
    αʔόʹΩϟογϡͤ͞ɺͦΕΛଞऀʹ഑৴͢Δɺͱ͍͏߈ܸɻ
    ‣ +BWB4DSJQUΛ஫ೖͨ͠ϖʔδΛ഑৴͢Δ͜ͱͰ944߈ܸ͕Ͱ͖Δ
    ‣ ʢ৔߹ʹΑͬͯ͸ʣϚϧ΢ΣΞͷ഑෍αʔό౳ʹ΋ར༻Ͱ͖Δɻ

    ߈ܸऀ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    ߈ܸϦΫΤετΛૹ৴
    ߈ܸऀʹΑΓૢ࡞͞Εͨ
    ίϯςϯπ͕ฦ٫͞ΕΔ
    ߈ܸऀʹΑΓૢ࡞͞Εͨ
    ίϯςϯπ͕Ωϟογϡ͞ΕΔ
    ߈ܸର৅ͷϢʔβ

    View Slide

  115. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FC$BDIF1PJTPOJOH
    ‣ 8FC$BDIF1PJTPOJOHʜѱҙͷ͋ΔίϯςϯπΛʢͳΜͱ͔ͯ͠ʣΩϟογϡ
    αʔόʹΩϟογϡͤ͞ɺͦΕΛଞऀʹ഑৴͢Δɺͱ͍͏߈ܸɻ
    ‣ +BWB4DSJQUΛ஫ೖͨ͠ϖʔδΛ഑৴͢Δ͜ͱͰ944߈ܸ͕Ͱ͖Δ
    ‣ ʢ৔߹ʹΑͬͯ͸ʣϚϧ΢ΣΞͷ഑෍αʔό౳ʹ΋ར༻Ͱ͖Δɻ

    ߈ܸऀ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    ߈ܸର৅ͷϢʔβ
    ߈ܸϦΫΤετΛૹ৴
    ߈ܸऀʹΑΓૢ࡞͞Εͨ
    ίϯςϯπ͕ฦ٫͞ΕΔ
    ߈ܸऀʹΑΓૢ࡞͞Εͨ
    ίϯςϯπ͕Ωϟογϡ͞ΕΔ
    ߈ܸऀͱಉ͡
    ϦιʔεΛཁٻ
    ߈ܸऀʹΑΓૢ࡞͞Εͨ
    ίϯςϯπ͕ฦ٫͞ΕΔ

    View Slide

  116. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FC$BDIF1PJTPOJOH
    ‣ ѱҙͷ͋Δίϯςϯπͷૠೖ͸ʁ
    ‣ Ωϟογϡʹ͸Ωʔʢ˺ΩϟογϡΛอ؅৔ॴ͔Β୳͢ͱ͖ʹ࢖ΘΕΔ৘ใʣ͕͋Δɻ
    ‣ 3FqFDUFE944੬ऑੑ͸ϒϥ΢β͔Βൃߦ͞ΕΔϦΫΤετ͕ى఺ͱͳΔͨΊɺ੍໿͕
    ݫ͍͕͠ɺ߈ܸऀ͸ࣗ෼ͷखݩ͔ΒͰ͋Ε͹ɺࣗ༝ʹϦΫΤετ͕ૹ৴Ͱ͖Δɻ
    ‣ Ωϟογϡ͞ΕΔϖʔδ΁ͷϦΫΤετΛߦ͍ɺΩϟογϡΩʔͰ͸ͳ͍෦෼ʹΑΓ
    3FqFDUFE944੬ऑੑ΍ɺ౎߹ͷྑ͍ϦΫΤετͷมԽ͕Ҿ͖ىͤ͜Ε͹ɺΩϟογϡ
    ܦ༝ͰଞऀΛ߈ܸͰ͖Δ͜ͱʹͳΔʂ
    ‣ ࢀߟจݙ
    ‣ 1SBDUJDBM8FC$BDIF1PJTPOJOH
    IUUQTQPSUTXJHHFSOFUSFTFBSDIQSBDUJDBMXFCDBDIFQPJTPOJOH
    ‣ 8FC$BDIF&OUBOHMFNFOU/PWFM1BUIXBZTUP1PJTPOJOH
    IUUQTQPSUTXJHHFSOFUSFTFBSDIXFCDBDIFFOUBOHMFNFOU

    View Slide

  117. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    $BDIF1PJTPOFE%FOJBMPG
    4FSWJDFʢ$1%P4ʣ
    ‣ ΩϟογϡͷΩʔҎ֎ͷ෦෼Λௐ੔͢Δ͜ͱͰΤϥʔϖʔδΛදࣔͤ͞Δ͜ͱ͕
    Ͱ͖ɺ͔ͭΩϟογϡαʔό͕ͦΕΛΩϟογϡ͢Δͱ͖ɺͦΕΛ௨ͯ͠8FC
    ϖʔδͷදࣔ๦֐ʢ%P4ʣ͕Ͱ͖ͯ͠·͏ɺͱ͍͏໰୊ͷ͜ͱɻ

    IUUQTDQEPTPSH

    View Slide

  118. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FC$BDIF%FDFQUJPO

    ߈ܸྫͷঢ়گઃఆ

    ߈ܸର৅ͷϢʔβ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    NZQBHFͱNZQBHFGPPDTT͕
    ಉ͘͡ϚΠϖʔδΛฦ͢ͱԾఆ͢Δ
    ύε͕DTTͷܗΛ͍ͯ͠ΔϦιʔεΛ
    ໰౴ແ༻ͰΩϟογϡ͢ΔͱԾఆ͢Δ

    View Slide

  119. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FC$BDIF%FDFQUJPO

    ߈ܸର৅ͷϢʔβΛ༠ಋ͢Δ

    ߈ܸର৅ͷϢʔβ
    ߈ܸऀ
    Ͳ͏΍Β͜ͷ8FCϖʔδʹඒຯ͍͠
    ͓ͦ͹ͷ৘ใ͕͋ΔΒ͍ͧ͠ʂ
    ͍͍࿩ͩͶɻݟͯΈΑ͏ʜ

    View Slide

  120. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FC$BDIF%FDFQUJPO

    ߈ܸର৅ͷϢʔβ͔ΒΈͨϦιʔεΛΩϟογϡͤ͞Δ

    ߈ܸର৅ͷϢʔβ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    ༠ಋ͞ΕͯNZQBHFGPPDTT
    ʹΞΫηε Ωϟογϡ͕ͳ͍ͷͰ
    ΦϦδϯαʔόʹ໰͍߹Θͤ
    NZQBHFGPPDTT
    ʢத਎͸NZQBHFʣΛฦ٫
    DTTܗࣜͷϦιʔεͳͷͰ
    Ծఆ௨ΓΩϟογϡ͢Δ
    Ϩεϙϯε͕ಧ͘
    ߈ܸऀ

    View Slide

  121. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FC$BDIF%FDFQUJPO

    Ωϟογϡͤͨ͞ϦιʔεΛϦʔΫ͢Δ

    ߈ܸର৅ͷϢʔβ
    Ωϟογϡ
    αʔό
    ΦϦδϯ
    αʔό
    ༠ಋ͞ΕͯNZQBHFGPPDTT
    ʹΞΫηε Ωϟογϡ͕ͳ͍ͷͰ
    ΦϦδϯαʔόʹ໰͍߹Θͤ
    NZQBHFGPPDTT
    ʢத਎͸NZQBHFʣΛฦ٫
    DTTܗࣜͷϦιʔεͳͷͰ
    Ծఆ௨ΓΩϟογϡ͢Δ
    Ϩεϙϯε͕ಧ͘
    ߈ܸऀ
    NZQBHFGPPDTT
    ʹΞΫηε
    Ωϟογϡ͔Βɺ߈ܸର৅ͷϢʔβ͔Βݟͨ
    NZQBHFGPPDTTNZQBHFͷத਎͕ฦΔ

    View Slide

  122. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FC$BDIF%FDFQUJPO
    ‣ 8FC$BDIF%FDFQUJPOʢ8$%ʣ߈ܸ
    ‣ ͋Δਓ1͕ΞΫηεͰ͖ΔϦιʔε3͕͋Δͱ͢Δɻ
    ‣ ·ͨɺ3Λࢦ͢63-Ͱ͋ͬͯɺ͔ͭΩϟογϡαʔό͕ΩϟογϡΛͯ͠͠·͏Α͏
    ͳ63-͕ଘࡏ͢Δ৔߹Λߟ͑Δɻ
    ‣ ͜ͷͱ͖ɺਓ1Λɺͦͷ63-ʹ༠ಋ͢Δ͜ͱͰɺ3͕Ωϟογϡ͞ΕΔɻ
    ‣ ߈ܸऀ͸ޙ͔Βͦͷ63-ʹΞΫηε͢Δ͜ͱͰɺຊདྷ߈ܸऀ͕3ʹΞΫηεͰ͖ͳ͍
    ৔߹Ͱ͋ͬͯ΋ɺΩϟογϡ͞Εͨ3ΛಘΔ͜ͱ͕Ͱ͖ͯ͠·͏ɻ
    ‣ ࢀߟจݙ
    ‣ 8FC$BDIF%FDFQUJPO"UUBDLʢ(JM ʣ
    IUUQTXXXCMBDLIBUDPNEPDTVTXFEOFTEBZVT(JM8FC$BDIF%FDFQUJPO"UUBDLXQQEG
    ‣ $BDIFEBOE$POGVTFE8FC$BDIF%FDFQUJPOJOUIF8JMEʢ.JSIFJEBSJFUBMʣ
    IUUQTXXXVTFOJYPSHDPOGFSFODFVTFOJYTFDVSJUZQSFTFOUBUJPONJSIFJEBSJ

    View Slide

  123. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ұ؏ੑͷ୲อ͸೉͍͠
    BOZUJNFZPVIBWFPVUPGCBOEQPMJDZBQQMJFESBUIFSUIBOIBWJOHUIFQPMJDZ
    BDUVBMMZDPOUBJOFEJOUIFSFTQPOTFJUTFMG UIFSF`TBDIBODFGPSJUUPCFPVUPG
    TZOD DBVTJOHNJTDPOpHVSBUJPOBOEQPUFOUJBMWVMOFSBCJMJUJFT

    [email protected]

    View Slide

  124. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ͜ΕΒͷ໰୊Λආ͚ΔͨΊʹ
    ‣ ΦϦδϯαʔό͔Β$BDIF$POUSPMϔομΛద੾ʹૹग़͠Α͏ɻ
    ‣ ద੾ʹOPTUPSF౳ͷσΟϨΫςΟϒΛૹग़͠Α͏ɻ
    ‣ Կ͕ద੾͔͸ঢ়گʹΑΔͷͰʢSFDBQ'BTUMZ͸OPTUPSFΛແࢹ͢Δʣɺదٓ3'$
    ΍Ωϟογϡαʔό$%/αʔϏεͷ࢓༷ΛಡΈɺ͔֬ΊΔඞཁ͕͋Δɻ
    ‣ ΋ͪΖΜɺΩϟογϡͯ͠Α͍΋ͷ͸ੵۃతʹΩϟογϡ͍ͯ͘͠΂͖ɻ
    ‣ Ωϟογϡαʔό$%/αʔϏεͱΦϦδϯαʔόͷҰ؏ੑΛอͱ͏ɻ
    ‣ $BDIF$POUSPMϔομͰͷઃఆͱɺιϑτ΢ΣΞɾαʔϏεݻ༗ͷઃఆ͕৯͍ҧ͏Α͏
    ͳ৔໘ΛɺͰ͖Δ͚ͩ࡞Βͳ͍͜ͱ͕େ੾Ͱ͋Δɻ
    ‣ ಛʹ1BUI$POGVTJPOʹ͸஫ҙ͢Δඞཁ͕͋Δɻ

    View Slide

  125. ϨεϙϯεϘσΟͷੜ੒ʹؔΘΔ
    ॲཧܥͷ࢓༷ࠩΛར༻ͨ͠߈ܸ
    $IBQUFS4FDUJPO

    View Slide

  126. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ϨεϙϯεϘσΟͷੜ੒
    ‣ ϨεϙϯεϘσΟ͸༷ʑͳܗͰੜ੒͞ΕΔ


    {% for item in items %}
    {{ item.name }}
    {{ item.description }}
    {% endfor %}

    ϧʔϓͷ։࢝
    ϧʔϓͷऴྃ
    ม਺஋ͷల։
    +JOKBςϯϓϨʔτ
    $q = $_GET['q'];
    echo htmlspecialchars($q, ENT_QUOTES, 'UTF-8');
    ?>
    1)1εΫϦϓτ
    (&5ύϥϝʔλΛ
    Τεέʔϓͯ͠ग़ྗ

    View Slide

  127. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ςϯϓϨʔτΤϯδϯͷࠞ༻
    ‣ ςϯϓϨʔτΤϯδϯ͸͠͹͠͹ݻ༗ͷه๏Λ࣋ͭɻ
    ‣ ςϯϓϨʔτΤϯδϯ͕ෳ਺༻͍ΒΕΔ৔߹ɺͦΕΒͷؒͷه๏ࠩʹΑΓɺΑ͖
    ͤ͵੬ऑੑ͕ੜ·Εͯ͠·͏৔߹͕͋Δɻ
    ‣ ৄ͘͠͸ԋशΛࢀরͷ͜ͱɻ
    ‣ αʔόαΠυͰͷ)5.-ੜ੒ͱΫϥΠΞϯταΠυͰͷʢͳΜΒ͔ͷςϯϓϨʔτݴ
    ޠΛ༻͍ͨʣ)5.-ੜ੒͕ࠞ༻͞ΕΔέʔε͕୅දతɻ

    8FCϒϥ΢β 8FCΞϓϦέʔγϣϯ
    {{ ... }}͸ม਺ల։༻
    ͷه๏ͩͱࢥ͍ͬͯΔ
    {{ ... }}͸ͨͩͷ
    จࣈྻͩͱࢥ͍ͬͯΔ

    View Slide

  128. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    &EHF4JEF*ODMVEFTʢ&4*ʣ
    ‣ &EHF4JEF*ODMVEFTʢ&4*ʣʜ9.-ϕʔεͷϚʔΫΞοϓݴޠ
    ‣ ౳ͷλάʹΑΓɺҎԼ͕දݱͰ͖Δɻ
    ‣ αϒϦιʔεͷಈతͳऔಘɾల։
    ‣ ؆୯ͳม਺ૢ࡞
    ‣ 7BSOJTI 'BTUMZ ౳ͷ༷ʑͳιϑτ΢ΣΞ͕&4*ͷॲཧʹରԠ͍ͯ͠Δɻ


    Foobar



    &4*ॲཧܥ͕͜ͷ
    ෦෼Λల։͢Δ

    View Slide

  129. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    &EHF4JEF*ODMVEFT*OKFDUJPO
    ‣ &4**OKFDUJPOʜ&4*λάΛʢ944߈ܸͱಉ͡ཁྖͰʣόοΫΤϯυαʔό͔
    ΒͷϨεϙϯεʹ஫ೖ͢Δ͜ͱͰɺ్தͷ&4*ॲཧܥΛૢ࡞͢Δ߈ܸɻ
    ‣ 443'߈ܸ΍)5510OMZϑϥά͕෇༩͞Εͨ$PPLJFͷϦʔΫʹར༻Ͱ͖Δɻ

    ΫϥΠΞϯτ
    &4*Λղऍ͢Δ
    ϑϩϯτΤϯυαʔό
    όοΫΤϯυ
    αʔό
    ͸
    Ṗͷλάͩͱࢥ͍ͬͯΔ
    ͸
    &4*λάͩͱࢥ͍ͬͯΔ

    View Slide

  130. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ରࡦ
    )5.-ੜ੒ॲཧͷ࢓༷ࠩΛར༻ͨ͠߈ܸ
    ‣ )5.-ͷੜ੒ॲཧ͸͋ΒΏΔ৔໘ͰߦͳΘΕΔɻ
    ‣ ͦΕΒॲཧܥͷؒʹ͸࢓༷͕ࠩ͋Δ৔߹͕͋Δɻ
    ‣ ಛघͳҙຯΛ࣋ͭจࣈͷछྨ
    ‣ ॲཧܥ͕࣋ͭػೳ
    ‣ )5.-ͷੜ੒ʹࢀՃ͢Δॲཧܥಉ࢜͸ʜ
    ‣ લఏͱͯ͠ɺͰ͖Δ͚ͩݮΒ͓ͯ͘͠ͱΑ͍ɻ
    ‣ &4*ͳͲ͸ɺ࢖Θͳͯ͘ࡁΉͷͰ͋Ε͹ɺແޮԽ͓ͯ͘͠ɻ
    ‣ Ͳ͏ͯ͠΋ෳ਺Λͭͳ͛Δඞཁ͕͋Δ৔߹ʹ͸ɺ࢓༷ࠩΛ͏·͘Ϋογϣϯͯ͠ɺҰ؏
    ੑΛ࣋ͨͤͯ΍Δඞཁ͕͋Δɻ

    View Slide

  131. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ
    ‣ ҎԼͷͭͷ߈ܸྫ͸ɺͲΕ΋ιϑτ΢ΣΞؒͷҰ؏ੑͷͳ͕͞ট͍ͨ໰୊Ͱ͋
    Δͱଊ͑Δ͜ͱ͕Ͱ͖Δɻ
    ‣ )5513FRVFTU4NVHHMJOH
    ‣ $POUFOU-FOHUI5SBOTGFS&ODPEJOHϔομͷෆద੾ͳऔΓѻ͍ʹΑΓൃੜ͢
    ΔɺதܧαʔόͱΞϓϦέʔγϣϯαʔόؒͷෆ੔߹Λ༻͍ͨ߈ܸ
    ‣ $BDIFʹؔ࿈ͨ͠߈ܸ
    ‣ 8FC$BDIF1PJTPOJOH 8FC$BDIF%FDFQUJPO $1%P4ͳͲ
    ‣ ϨεϙϯεϘσΟͷੜ੒ʹؔΘΔॲཧܥͷ࢓༷ࠩΛར༻ͨ͠߈ܸ
    ‣ 443$43ͷෆద੾ͳࠞ༻΍&4**OKFDUJPO߈ܸͳͲ

    View Slide

  132. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ
    ‣ 8FCΞϓϦέʔγϣϯͷߏஙʹඞཁͳίϯϙʔωϯτ͕૿͖͑ͯͨࠓɺͦΕΒ
    ΛҰ؏ੑΛอͪͳ͕Βͭͳ͛Δͱ͍͏ͷ͸ɺඇৗʹେ੾ͳ؍఺Ͱ͋Δɻ
    ‣ ྫ͑͹ɺҎԼͷΑ͏ͳ৔߹ʹ͸໰୊͕ൃੜͯ͠͠·͏ɻ
    ‣ ࢓༷ͷؒʹҰ؏ੑ͕ͳ͍ͷʹɺͦΕͷࠩ෼ΛΫογϣϯͤͣʹͭͳ͛ͯ͠·ͬͨͱ͖
    ‣ ࣮૷ͷؒʹҰ؏ੑ͕ͳ͍ͷʹɺͦΕʹؾ͕෇͔ͣʹͭͳ͛ͯ͠·ͬͨͱ͖
    ‣ ֤ίϯϙʔωϯτΛઃܭ͢Δɾͭ͘Δଆͷਓʹ໰୊͕͋ΔΘ͚Ͱ͸͋Δͷ͕ͩʜ
    ‣ 8FCΞϓϦέʔγϣϯ։ൃऀͱͯ͠͸ɺҎԼͷ఺ʹཹҙ͠Α͏ɻ
    ‣ ࣗ෼ͷ࢖͓͏ͱ͍ͯ͠Δίϯϙʔωϯτ܈ʹɺ໰୊ʹͳΓͦ͏ͳʮࠩʯ͕ͳ͍͔ɻ
    ‣ ࣗ෼ͷ࢖༻͢Δίϯϙʔωϯτͷ࣮૷ʹط஌ͷ໰୊͕ͳ͍͔
    ‣ ηΩϡϦςΟٕज़ऀͱͯ͠͸ɺͦ͏͍͏໰୊Λૣظʹൃݟͯ͠ɺੈͷத͔ΒηΩϡΞͰ
    ͳ͍΋ͷΛݮΒ͍͚ͯ͠ΔͱΑ͍


    View Slide

  133. αΠυνϟωϧ߈ܸͷجૅ
    $IBQUFS

    View Slide

  134. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    αΠυνϟωϧ߈ܸ
    ‣ αΠυνϟωϧ
    ‣ ॲཧͷ݁Ռൃੜͨ͠ʮ෭࣍తͳӨڹͷ͋ΒΘΕʯ͕؍ଌͰ͖Δܦ࿏ͷ͜ͱɻ
    ‣ ʮ෭࣍తͳӨڹͷ͋ΒΘΕʯͷྫ
    ‣ ॲཧͷফඅిྗͷมԽ
    ‣ ॲཧͷ࣮ߦ࣌ؒͷಛੑ
    ‣ αΠυνϟωϧ߈ܸʜ͋Δॲཧʹର͢ΔαΠυνϟωϧΛ؍ଌ͢Δ͜ͱͰɺͦ
    ͷॲཧʹؔΘΔ৘ใΛϦʔΫ͢Δ߈ܸͷ͜ͱɻ

    ೖྗ ग़ྗ
    ॲཧ
    ෭࣍తͳӨڹͷ͋ΒΘΕ

    View Slide

  135. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FCʹ͓͚ΔαΠυνϟωϧ߈ܸ
    ‣ 8FCʹ͓͍ͯ΋αΠυνϟωϧ߈ܸͷํ๏࿦͕௕Β͘ݕ౼͞Ε͖͍ͯͯΔɻ
    ‣ ࢀߟ'FMUFOBOE4DIOFJEFS ͷ$BDIFCBTFEUJNJOHBUUBDLT
    IUUQTEMBDNPSHEPJ
    ‣ 8FCʹ͓͚ΔαΠυνϟωϧ߈ܸΛɺ࣍ͷ؍఺Ͱ෼ྨͯ͠ߟ͑Δ

    αʔόαΠυͷαΠυνϟωϧΛ༻͍ͨ߈ܸ

    8FCϒϥ΢β಺ͷαΠυνϟωϧΛ༻͍ͨ߈ܸ

    View Slide

  136. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    αʔόαΠυͷαΠυνϟωϧΛ༻͍ͨ߈ܸ
    ‣ Θ͔Γ΍͍͢ྫαʔόαΠυϩδοΫ΁ͷλΠϛϯά߈ܸ
    ‣ ʢೖྗ γεςϜͷ಺෦ঢ়ଶʣʹԠͯ͡ɺॲཧʹཁ͢Δ࣌ؒ͸มԽ͢Δɻ
    ‣ ͏·͘ೖྗΛมԽͤ͞Δͱɺॲཧ࣌ؒΛ؍ଌ͢Δ͜ͱͰɺγεςϜͷ಺෦ঢ়ଶΛਪଌ͢
    Δ͜ͱ͕Ͱ͖Δ৔߹͕͋Δɻ
    ‣ ֶज़ྖҬͰ͸#PSU[BOE#POFI ͕Α͘Ҿ͖߹͍ʹग़͞ΕΔ
    IUUQTEMBDNPSHEPJ

    ೖྗ ॲཧ ग़ྗ
    ͜͜ʹ͔͔Δ࣌ؒΛ؍ଌ͢Δ

    View Slide

  137. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ΦϥΫϧʹ஫໨͢Δ
    ‣ αΠυνϟωϧ͸͠͹͠͹ΦϥΫϧͱͯ͠ѻ͏͜ͱ͕Ͱ͖Δ
    ‣ ΦϥΫϧʜ໰͍Λ౤͛ΔͱɺͦΕʹ౴͑ͯ͘ΕΔ΋ͷ
    ‣ தͰ͸ͲΜͳ͜ͱ͕ߦͳΘΕΔ͔͕ɺ໰Λ౤͛Δଆʹ։ࣔ͞Ε͍ͯΔඞཁ͸ͳ͍
    ‣ ಛʹ8FCʹ͓͚ΔαΠυνϟωϧ߈ܸͷྖҬͰ͸ɺड़ޠ1Λ౤͛Δͱɺൿີͷ৘ใE
    ʹରͯ͠1 E
    ͕ਅِ͔͔൑ఆ͢Δ໰୊ͷιϧόͷ͜ͱΛࢦ͕ͪ͠

    ΫΤϦ
    ৘ใ
    ΦϥΫϧ ΫΤϦͷ݁Ռ

    View Slide

  138. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    "70SBDMF
    ‣ 8JOEPXT%FGFOEFS͕ߦ͏ɺϑΝΠϧͷ
    ෦෼తͳධՁͱͦΕʹجͮ͘ѱੑݕ஌Λ
    ΦϥΫϧԽͯ͠ར༻͢ΔαΠυνϟωϧ
    ߈ܸͷ͜ͱɻ
    ‣ ࢯ͸ଞͷΞϯν΢Πϧειϑτ΢ΣΞ
    ΍ɺͦͷଞҰൠͷ"VEJUPSzʹରͯ͠
    ΋ɺಉछͷΦϥΫϧʢ"VEJUPS#BTFE
    0SBDMFʣ͕ߏ੒Ͱ͖ΔՄೳੑʹ͍ͭͯ΋
    ݴٴ͍ͯ͠Δɻ
    ‣ DG944"VEJUPSΛ༻͍ͨ944FBSDI

    IUUQTUXJUUFSDPNUOLTUBUVT T

    View Slide

  139. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    #MJOE3FHFY*OKFDUJPO"UUBDL

    ‣ ҎԼͷ৚͕݅੒Γཱͭͱ͖ʹʜ
    ‣ ೚ҙʹ༩͑Δ͜ͱͷͰ͖Δਖ਼نදݱʹΑ
    Γɺ͋Δେ੾ͳ஋͕૸ࠪ͞ΕΔ
    ‣ ਖ਼نදݱΤϯδϯ͕3F%P4߈ܸ଱ੑͷ
    ͳ͍΋ͷͰ͋Δ
    ‣ ॲཧ࣌ؒΛαΠυνϟωϧͱͯ͠ɺͦͷ
    ஋ΛϦʔΫ͢Δ͜ͱ͕Ͱ͖Δͱ͍͏߈ܸ
    IUUQTEJBSZTIJGUKTJOGPCMJOESFHVMBSFYQSFTTJPOJOKFDUJPO

    View Slide

  140. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    8FCϒϥ΢β಺ͷαΠυνϟωϧΛ༻͍ͨ߈ܸ
    ‣ 94-FBL
    ‣ 8FCϒϥ΢β಺ͷαΠυνϟωϧͷ͜ͱɻ
    ‣ ͜ΕΛ༻͍ͨ߈ܸ͸94-FBL"UUBDLͱݺ͹ΕΔɻ
    ‣ 944FBSDI"UUBDL
    ‣ ৘ใ૸ࠪΛ͢ΔػೳͷڍಈΛ94-FBLʹΑΓಡΈ
    ग़͢͜ͱͰɺΦϥΫϧΛߏ੒͠ɺͦΕʹΑΓ৘ใͷ
    ෮ݩΛ໨ࢦ͢߈ܸͷ͜ͱɻ
    ‣ ຊߨٛͰ͸ৄ͘͠આ໌͠ͳ͍͕ɺࡢ೥ͷηΩϡ
    ϦςΟɾΩϟϯϓશࠃେձͰ͸͜ͷลΛऔΓ
    ѻͬͨͷͰɺͦͷࢿྉΛݟͯΈΔͱΑ͍ɻ

    [email protected]

    View Slide

  141. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    Ͳ͏ରࡦ͍ͯ͘͠΂͖ʁ
    ‣ 8FCͷྖҬʹ͓͍ͯ΋αΠυνϟωϧ߈ܸ͸ແࢹͰ͖ͳ͍ɻ
    ‣ αʔόαΠυͷαΠυνϟωϧΛ༻͍ͨ߈ܸ
    ‣ දݱྗͷߴ͍ΫΤϦݴޠΛड͚औΓɺͦΕͰ৘ใ಺Λ૸ࠪ͢Δͱ͖͸ɺΘ͔ͣͳڍ
    ಈ͕ࠩ໰୊ʹͳΔ৔߹͕͋ΔͷͰɺ஫ҙΛ෷͓͏ɻ
    ‣ ૸ࠪʹݶΒͣɺେ੾ͳσʔλͷॲཧͰ͸ɺ ࠷ྑcฏۉc࠷ѱ
    ܭࢉྔͷࠩΛҙࣝ͠Α͏ɻ
    ‣ 8FCϒϥ΢β಺ͷαΠυνϟωϧΛ༻͍ͨ߈ܸ
    ‣ ͦ΋ͦ΋େ੾ͳ৘ใ͕8FCϒϥ΢βʹಧ͔ͳ͍Α͏ʹɺ$PPLJFͷSameSite ଐ
    ੑΛݫ͠໨ʹӡ༻Ͱ͖ΔͱΑ͍ɻ
    ‣ X-Frame-Options ϔομ΍$41ͷframe-ancestors σΟϨΫςΟϒɺCross-
    Origin-Resource-Policy ϔομɺCross-Origin-Opener-Policy ϔο
    μɺrel=noopenerଐੑͳͲʹΑΓɺ͞Βʹ৘ใ࿙Εग़͢ܦ࿏Λ௵ͤΔɻ

    View Slide

  142. ͓ΘΓʹ
    1PTUGBDF

    View Slide

  143. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    ͍·ͷʮ8FCηΩϡϦςΟʯͱ͸

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ
    ‣ ٞ࿦ͷൣғΛ໌֬ʹ͢ΔͨΊʹɺҎޙ͸ʮ8FCηΩϡϦςΟʯͱ͍͏ྖҬΛɺ
    ҎԼͷྖҬʹ෼͚ͯߟ͑Δɻ
    ‣ ΫϥΠΞϯταΠυ8FCγεςϜͷηΩϡϦςΟ
    ‣ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ

    View Slide

  144. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    ͍·ͷʮ8FCηΩϡϦςΟʯͱ͸

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ
    ‣ ͜ͷηΩϡϦςΟΛҎԼͷ̏؍఺͔Βߟ͑Α͏
    ‣ ηΩϡΞʹͭ͘Δ
    ‣ ηΩϡΞʹͭͳ͛Δ
    ‣ ηΩϡΞʹ͏͔͢͝

    View Slide

  145. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    ͍·ͷʮ8FCηΩϡϦςΟʯͱ͸

    αʔόαΠυ
    8FCγεςϜ
    ΫϥΠΞϯταΠυ
    8FCγεςϜ
    ;
    ‣ ͪ͜ΒΛֶͿͨΊͷૉࡐ΋ݱࡏ४උதʜ
    ‣ ϦϦʔεͰ͖ͨΒ5XJUUFS౳ͰҊ಺͠·͢ɻ
    [email protected]

    View Slide

  146. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ
    ‣ ҎԼͷͭͷ߈ܸྫ͸ɺͲΕ΋ιϑτ΢ΣΞؒͷҰ؏ੑͷͳ͕͞ট͍ͨ໰୊Ͱ͋
    Δͱଊ͑Δ͜ͱ͕Ͱ͖Δɻ
    ‣ )5513FRVFTU4NVHHMJOH
    ‣ $POUFOU-FOHUI5SBOTGFS&ODPEJOHϔομͷෆద੾ͳऔΓѻ͍ʹΑΓൃੜ͢
    ΔɺதܧαʔόͱΞϓϦέʔγϣϯαʔόؒͷෆ੔߹Λ༻͍ͨ߈ܸ
    ‣ $BDIFʹؔ࿈ͨ͠߈ܸ
    ‣ 8FC$BDIF1PJTPOJOH 8FC$BDIF%FDFQUJPO $1%P4ͳͲ
    ‣ ϨεϙϯεϘσΟͷੜ੒ʹؔΘΔॲཧܥͷ࢓༷ࠩΛར༻ͨ͠߈ܸ
    ‣ 443$43ͷෆద੾ͳࠞ༻΍&4**OKFDUJPO߈ܸͳͲ

    View Slide

  147. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ
    ‣ 8FCΞϓϦέʔγϣϯͷߏஙʹඞཁͳίϯϙʔωϯτ͕૿͖͑ͯͨࠓɺͦΕΒ
    ΛҰ؏ੑΛอͪͳ͕Βͭͳ͛Δͱ͍͏ͷ͸ɺඇৗʹେ੾ͳ؍఺Ͱ͋Δɻ
    ‣ ྫ͑͹ɺҎԼͷΑ͏ͳ৔߹ʹ͸໰୊͕ൃੜͯ͠͠·͏ɻ
    ‣ ࢓༷ͷؒʹҰ؏ੑ͕ͳ͍ͷʹɺͦΕͷࠩ෼ΛΫογϣϯͤͣʹͭͳ͛ͯ͠·ͬͨͱ͖
    ‣ ࣮૷ͷؒʹҰ؏ੑ͕ͳ͍ͷʹɺͦΕʹؾ͕෇͔ͣʹͭͳ͛ͯ͠·ͬͨͱ͖
    ‣ ֤ίϯϙʔωϯτΛઃܭ͢Δɾͭ͘Δଆͷਓʹ໰୊͕͋ΔΘ͚Ͱ͸͋Δͷ͕ͩʜ
    ‣ 8FCΞϓϦέʔγϣϯ։ൃऀͱͯ͠͸ɺҎԼͷ఺ʹཹҙ͠Α͏ɻ
    ‣ ࣗ෼ͷ࢖͓͏ͱ͍ͯ͠Δίϯϙʔωϯτ܈ʹɺ໰୊ʹͳΓͦ͏ͳʮࠩʯ͕ͳ͍͔ɻ
    ‣ ࣗ෼ͷ࢖༻͢Δίϯϙʔωϯτͷ࣮૷ʹط஌ͷ໰୊͕ͳ͍͔
    ‣ ηΩϡϦςΟٕज़ऀͱͯ͠͸ɺͦ͏͍͏໰୊Λૣظʹൃݟͯ͠ɺੈͷத͔ΒηΩϡΞͰ
    ͳ͍΋ͷΛݮΒ͍͚ͯ͠ΔͱΑ͍


    View Slide

  148. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    αΠυνϟωϧ߈ܸͷجૅ
    ‣ αΠυνϟωϧ
    ‣ ॲཧͷ݁Ռൃੜͨ͠ʮ෭࣍తͳӨڹͷ͋ΒΘΕʯ͕؍ଌͰ͖Δܦ࿏ͷ͜ͱɻ
    ‣ ʮ෭࣍తͳӨڹͷ͋ΒΘΕʯͷྫ
    ‣ ॲཧͷফඅిྗͷมԽ
    ‣ ॲཧͷ࣮ߦ࣌ؒͷಛੑ
    ‣ αΠυνϟωϧ߈ܸʜ͋Δॲཧʹର͢ΔαΠυνϟωϧΛ؍ଌ͢Δ͜ͱͰɺͦ
    ͷॲཧʹؔΘΔ৘ใΛϦʔΫ͢Δ߈ܸͷ͜ͱɻ

    ೖྗ ओͨΔग़ྗ
    ॲཧ
    ෭࣍తͳӨڹͷ͋ΒΘΕ

    View Slide

  149. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    খ·ͱΊ
    αΠυνϟωϧ߈ܸͷجૅ
    ‣ 8FCͷྖҬʹ͓͍ͯ΋αΠυνϟωϧ߈ܸ͸ແࢹͰ͖ͳ͍ɻ
    ‣ αʔόαΠυͷαΠυνϟωϧΛ༻͍ͨ߈ܸ
    ‣ දݱྗͷߴ͍ΫΤϦݴޠΛड͚औΓɺͦΕͰ৘ใ಺Λ૸ࠪ͢Δͱ͖͸ɺΘ͔ͣͳڍ
    ಈ͕ࠩ໰୊ʹͳΔ৔߹͕͋ΔͷͰɺ஫ҙΛ෷͓͏ɻ
    ‣ ૸ࠪʹݶΒͣɺେ੾ͳσʔλͷॲཧͰ͸ɺ ࠷ྑcฏۉc࠷ѱ
    ܭࢉྔͷࠩΛҙࣝ͠Α͏ɻ
    ‣ 8FCϒϥ΢β಺ͷαΠυνϟωϧΛ༻͍ͨ߈ܸ
    ‣ ͦ΋ͦ΋େ੾ͳ৘ใ͕8FCϒϥ΢βʹಧ͔ͳ͍Α͏ʹɺ$PPLJFͷSameSite ଐ
    ੑΛݫ͠໨ʹӡ༻Ͱ͖ΔͱΑ͍ɻ
    ‣ X-Frame-Options ϔομ΍$41ͷframe-ancestors σΟϨΫςΟϒɺCross-
    Origin-Resource-Policy ϔομɺCross-Origin-Opener-Policy ϔο
    μɺrel=noopenerଐੑͳͲʹΑΓɺ͞Βʹ৘ใ࿙Εग़͢ܦ࿏Λ௵ͤΔɻ

    View Slide

  150. ˜TIJGUKTJOGP
    ϚΫϩͳࢹ఺͔Βଊ͑Δ8FCηΩϡϦςΟ
    ऴΘΓʹ
    ‣ ηΩϡϦςΟ͸कΔ΂͖΋ͷ͋Γ͖ͷଘࡏͳͷͰʜ
    ‣ ·ͣ͸ɺͦͷकΔ΂͖΋ͷΛे෼ʹཧղ͢Δ͜ͱ͕େ੾ɻ
    ‣ ͦͯ͠ɺकΔ΂͖΋ͷ͕มԽ͍͚ͯ͠͹ηΩϡϦςΟΛߟ͑Δ্Ͱ࣋ͭ΂͖ࢹ఺΋มԽ
    ͍ͯ͘͜͠ͱΛ๨Εͣʹ͋Γ͍ͨɻ
    ‣ Ҿ͖ଓָ͖ٕ͘͠ज़ͱ޲͖߹͍͖ͬͯ·͠ΐ͏


    View Slide