Share
Embed
すこしだけマクロな視点から捉える Web セキュリティ / Web Security from the Macro Perspective (Short Version)
本資料はセキュリティ・ミニキャンプ in 大阪 2021 の一般講座で利用したものです。お問合せは Twitter アカウント 宛によろしくお願いします。
なお「マクロな視点から捉える Web セキュリティ」 の前半部分を再編したものとなっています。これは同一般講座において、セキュリティ・キャンプ全国大会で行われている講義の雰囲気をお伝えすることを目的としていたためです。
Takashi Yoneuchi
March 31, 2021
Transcript
66 slides
-
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ αʔόαΠυͷ8FCγεςϜαʔόαΠυ8FCΞϓϦέʔγϣϯͱɺϛυ ϧΣΞʢσʔλετΞϩʔυόϥϯαʣ͕͏·͘ڠௐಈ࡞͢Δ͜ͱʹΑΓ ࣮ݱ͞Ε͍ͯΔɻ αʔόαΠυ8FCγεςϜ ϛυϧΣΞ αʔόαΠυ8FCΞϓϦέʔγϣϯ
αʔόαΠυ8FCγεςϜ ࣮Ҏ֎ʹߟ͑Δ͖͜ͱ͕ࢁ͋Δ ຊʹೖΔલʹ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ 8FCϒϥβͳͲαʔόαΠυ͔Βಧ͚ΒΕͨϦιʔεΛॲཧ͢Δɻ ‣ ϦιʔεͷύʔεɾϨϯμϦϯά ‣ +BWB4DSJQUͷ࣮ߦ ‣
‣ ଟ͘ͷϦιʔε͕ಉ࣌ฒߦͰཧɾॲཧ͞ΕΔͰ͋Δɻ ΫϥΠΞϯταΠυ8FCγεςϜ 8FCϒϥβ ຊʹೖΔલʹ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ 8FCϒϥβͳͲαʔόαΠυ͔Βಧ͚ΒΕͨϦιʔεΛॲཧ͢Δɻ ‣ ϦιʔεͷύʔεɾϨϯμϦϯά ‣ +BWB4DSJQUͷ࣮ߦ ‣
‣ ଟ͘ͷϦιʔε͕ಉ࣌ฒߦͰཧɾॲཧ͞ΕΔͰ͋Δɻ ΫϥΠΞϯταΠυ8FCγεςϜ 8FCϒϥβ ϒϥβͷ༷࣋ͭʑͳηΩϡϦςΟػೳɾ༷ΛΒͳ͍ͱɺ ΞϓϦέʔγϣϯʹࢥΘ͵͕ൃੜ͠͏Δ ຊʹೖΔલʹ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ͔͜͜Βͷͷ֓ཁ ‣ ͔͜͜ΒҎԼͷͭͷมԽʹؔͯ͠ཧ͢Δ ‣ αʔόαΠυ8FCΞϓϦέʔγϣϯͷΞʔΩςΫνϟͷมԽ ‣ αʔόαΠυ8FCγεςϜͷߏɾ࣮ߦڥͷมԽ ‣
ͦͷ্ͰɺҎԼͷΛٞ͢Δ ‣ ͦΕΒͷมԽͷʢηΩϡϦςΟతͳࢹ͔ΒݟͨʣϙΠϯτԿ͔ ‣ ͦΕΒͷมԽ͕Ͳ͏8FCηΩϡϦςΟͷؔ৺ྖҬΛ͛Δ͔ ‣ ొ͢ΔΩʔϫʔυͭ ‣ ηΩϡΞʹͭ͘Δ ‣ ηΩϡΞʹͭͳ͛Δ ‣ ηΩϡΞʹ͏͔͢͝ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ Ͳ͏࡞Δʁ αʔόαΠυ8FCΞϓϦέʔγϣϯ ϛυϧΣΞ αʔόαΠυ8FCΞϓϦέʔγϣϯ αʔόαΠυ8FCγεςϜ ‣ αʔόαΠυ8FCΞϓϦέʔγϣϯ։ൃͷࣗ༝ߴ͍ɻ
‣ ʮͲ͏͍͏ߏͷ৫ͰɺͲ͏͍͏ߏͷͷΛɺͲ͏͍͏ۀϑϩʔͰ࡞Δͱ ޮత͔ʯٞ͞Ε͖͍ͯͯΔςʔϚͰ͋Δɻ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ ෳͷػೳ͕ͭͷΞϓϦέʔγϣϯʹ٧Ί͜·ΕΔΞʔΩςΫνϟͷ͜ͱɻ .POPMJUIJD"SDIJUFDUVSF ػೳ ػೳ ػೳ ػೳ
ػೳ ػೳ αʔόαΠυ8FCΞϓϦέʔγϣϯ ‣ ༷ʑͳཁૉ͔ΒͳΔ ‣ ϓϨθϯςʔγϣϯ ‣ ϏδωεϩδοΫ ‣ σʔλετΞΛऔΓѻ͏ ‣ ʜ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ ෳͷػೳ͕ͭͷΞϓϦέʔγϣϯʹ٧Ί͜·ΕΔΞʔΩςΫνϟͷ͜ͱɻ .POPMJUIJD"SDIJUFDUVSF ػೳ ػೳ ػೳ ػೳ
ػೳ ػೳ αʔόαΠυ8FCΞϓϦέʔγϣϯ ‣ ༷ʑͳཁૉ͔ΒͳΔ ‣ ϓϨθϯςʔγϣϯ ‣ ϏδωεϩδοΫ ‣ σʔλετΞΛऔΓѻ͏ ‣ ʜ ✘ίʔυϕʔε͕༰қʹංେԽ͕ͪ͠ ✘ٕज़બͷ෯͕ڱ·Δ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ ෳͷػೳ͕ͭͷΞϓϦέʔγϣϯʹ٧Ί͜·ΕΔΞʔΩςΫνϟͷ͜ͱɻ .POPMJUIJD"SDIJUFDUVSF ػೳ ػೳ ػೳ ػೳ
ػೳ ػೳ αʔόαΠυ8FCΞϓϦέʔγϣϯ ‣ ༷ʑͳཁૉ͔ΒͳΔ ‣ ϓϨθϯςʔγϣϯ ‣ ϏδωεϩδοΫ ‣ σʔλετΞΛऔΓѻ͏ ‣ ʜ ✘εέʔϧΞοϓ࣌ͷϦιʔεফඅޮ ✘ෳࡶͳϘτϧωοΫͷൃੜ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ .JDSPTFSWJDFT"SDIJUFDUVSF ‣ ۀػೳνʔϜΛ୯Ґͱͯ͠ಠཱͨ͠αʔϏεʢ.JDSPTFSWJDFʣΛ࡞Γɺͦ ΕΒͷ૯ମͱͯ͠ΞϓϦέʔγϣϯΛߏ͢Δɺͱ͍͏ΞʔΩςΫνϟͷ͜ͱɻ ‣ Ͳ͏ׂʢ%FDPNQPTFʣ͢Δͷ͕࠷ద͔ॾઆ͋Δ͕ʜ .JDSPTFSWJDF
.JDSPTFSWJDF .JDSPTFSWJDF .JDSPTFSWJDF .JDSPTFSWJDF -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ .JDSPTFSWJDFT"SDIJUFDUVSF ‣ ۀػೳνʔϜΛ୯Ґͱͯ͠ಠཱͨ͠αʔϏεʢ.JDSPTFSWJDFʣΛ࡞Γɺͦ ΕΒͷ૯ମͱͯ͠ΞϓϦέʔγϣϯΛߏ͢Δɺͱ͍͏ΞʔΩςΫνϟɻ ‣ Ͳ͏ׂʢ%FDPNQPTFʣ͢Δͷ͕࠷ద͔ॾઆ͋Δɻ .JDSPTFSWJDF
.JDSPTFSWJDF .JDSPTFSWJDF .JDSPTFSWJDF .JDSPTFSWJDF ίʔυϕʔε͕શମతʹૄ݁߹ʹ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ .JDSPTFSWJDFT"SDIJUFDUVSF ‣ ۀػೳνʔϜΛ୯Ґͱͯ͠ಠཱͨ͠αʔϏεʢ.JDSPTFSWJDFʣΛ࡞Γɺͦ ΕΒͷ૯ମͱͯ͠ΞϓϦέʔγϣϯΛߏ͢Δɺͱ͍͏ΞʔΩςΫνϟɻ ‣ Ͳ͏ׂʢ%FDPNQPTFʣ͢Δͷ͕࠷ద͔ॾઆ͋Δ͕ʜ .JDSPTFSWJDF
.JDSPTFSWJDF .JDSPTFSWJDF .JDSPTFSWJDF .JDSPTFSWJDF খ͍͞୯ҐͷσϓϩΠ͕ ͘͢͠ͳΔ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ .JDSPTFSWJDFT"SDIJUFDUVSF "1*(BUFXBZ1BUUFSOʹΑΔߏͷΠϝʔδ αʔόαΠυ8FCγεςϜ ڞ༗σʔλετΞ ήʔτΣΠ .JDSPTFSWJDF .JDSPTFSWJDF
.JDSPTFSWJDF .JDSPTFSWJDF ͏·͘Ε.JDSPTFSWJDF ୯ҐͰεέʔϧͤ͞ΒΕΔ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ϙΠϯτͷࢄ ΞʔΩςΫνϟͷมԽ͕ڧௐ͢Δ՝ αʔόαΠυ8FCγεςϜ ڞ༗σʔλετΞ ήʔτΣΠ .JDSPTFSWJDF .JDSPTFSWJDF
.JDSPTFSWJDF .JDSPTFSWJDF ྫσʔλͷݕূ߹ੑͷҡ࣋ʹؔ͢Δػೳͷࢄ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ϙΠϯτ࿈ܞͷ૿Ճ ΞʔΩςΫνϟͷมԽ͕ڧௐ͢Δ՝ αʔόαΠυ8FCγεςϜ ڞ༗σʔλετΞ ήʔτΣΠ .JDSPTFSWJDF .JDSPTFSWJDF
.JDSPTFSWJDF .JDSPTFSWJDF ௨৴౪ௌ͞ΕΔ͔ʜ Ұ؏ੑ่͕Ε͘͢ͳΔ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ ͜͜Ͱ.POPMJUIJD"SDIJUFDUVSFର.JDSPTFSWJDFT"SDIJUFDUVSFͷมભʢཐ ટʁʣΛͱʹɺૄ݁߹ͳΞʔΩςΫνϟͷҎԼͷଆ໘Λڧௐͨ͠ ‣ ͷࢄʹΑΔݕ౼࿙Εͷ૿Ճ ‣ ࿈ܞͷ૿ՃʹΑΔܦ࿏ͷෆ҆ɾҰ؏ੑͷܽམ
‣ ͳ͓ɺ͜ΕΒଟ͘ͷૄ݁߹ͳΞʔΩςΫνϟʹڞ௨ͨ͠՝ʹݟ͑Δ ‣ 8FCΞϓϦέʔγϣϯʹݶͬͨͰͳ͍ ‣ ૄ݁߹ͳΞʔΩςΫνϟؔ৺ͷΛॿ͚Δ͕ɺ͞ΕͨͷΛ·͕ͨͬͨؔ৺Λ ࣋ͭͷΛ͘͢͠ΔͷͰɺઃܭ͕దͰͳ͍ͱ༷ʑͳ͕ى͜Γ͕ͪ খ·ͱΊ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ ࡞ͬͨΞϓϦέʔγϣϯɺಈ͔ͯ͠Α͏͘ʹཱͭɻ ‣ ಈ͔ͨ͢Ίʹඞཁͳͷͨͪ ‣ ಈ͔ͨ͢ΊͷʢҎ࣮߱ߦج൫ͱݺͿʣ ‣ ಈ͔ͨ͢ΊʹඞཁͳϛυϧΣΞ
‣ ͔͜͜Βɺ͜ΕΒʹىͬͨ͜มԽΛཧͯ͠Έ·͠ΐ͏ɻ ΞϓϦέʔγϣϯΛಈ͔ͨ͢Ίʹ ϛυϧΣΞ αʔόαΠυ8FCΞϓϦέʔγϣϯ αʔόαΠυ8FCγεςϜ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ࣮ߦج൫Λ͔Β४උ͢Δͷେม ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ ؔ ؔ
‣ αʔϏεΛӡ༻͢ΔͨΊʹϋʔυΣΞ͔Β༻ҙ͢Δ߹ʜ ‣ ૿͢ͷʹݮΒ͢ͷʹʹؾ߹͕ඞཁʹͳΔɻ ‣ ૿ͦ͏ʹߪೖʹ͕͔͔࣌ؒΔ ‣ ݮΒͨ͢Ίʹదʹഇغ͢Δඞཁ͕͋Δ ‣ ʮյΕ͏Δʯͱ͍͏ҙࣝΛڧ࣋ͨ͘ͶͳΒͳ͍ɻ ‣ ؒҧͬͯػثʹίʔώʔΛ͜΅͢ͱյΕΔ ‣ ಈ͔͠ଓ͚͍ͯΔ͚ͩͰյΕΔ ‣ ͏·͍ͬͯ͘͘ʹेͳઐੑͱܦݧ͕ඞཁͰ͋Δɻ ‣ ͭΒ͍😫 ˞Ϋϥυڥʹେنোͨ·ʹ͋ΔͷͰɺʮյΕΔʯ͜ͱΛҙࣝ͠ͳ͍͚ͯ͘ͳ͍ͷ ཧػثΛऔΓѻ͏߹ಛ༗ͷͭΒ͞ɺͱ͍͏Θ͚Ͱͳ͍͕ʜ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ࣮ߦج൫ͷԾԽɾநԽͷਐߦ ‣ ʹͬͯΞϓϦέʔγϣϯͷ࣮ߦج൫ͷԾԽɾநԽ͕ਐΊΒΕ͖ͯͨɻ ‣ *OGSBTUSVDUVSFBTB4FSWJDF *BB4 ‣
1MBUGPSNBTB4FSWJDF 1BB4 ‣ $POUBJOFSBTB4FSWJDFʢ$BB4ʣ ‣ 'VODUJPOBTB4FSWJDF 'BB4 ‣ ࠓͰඇৗʹखܰʹ࣮ߦج൫͕࡞ɾഁغͰ͖ΔΑ͏ʹͳ͍ͬͯΔɻ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ 9BB4͕ఏڙ͢ΔൣғʢΠϝʔδʣ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ *BB4͕ఏڙ͢Δج൫ ؔ
ؔ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ $BB4͕ఏڙ͢Δج൫ ؔ ؔ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ 1BB4͕ఏڙ͢Δج൫ ؔ ؔ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ 'BB4͕ఏڙ͢Δج൫ ؔ ؔ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ࣮ߦج൫ͷԾԽɾநԽͷਐߦ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ *BB4͕ఏڙ͢Δج൫ ؔ
ؔ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ $BB4͕ఏڙ͢Δج൫ ؔ ؔ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ 1BB4͕ఏڙ͢Δج൫ ؔ ؔ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ 'BB4͕ఏڙ͢Δج൫ ؔ ؔ ϋʔυΣΞ9BB4ఏڙଆ͕ ཧͯ͘͠ΕΔˠخ͍͠ʂ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ࣮ߦج൫ͷԾԽɾநԽͷਐߦ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ *BB4͕ఏڙ͢Δج൫ ؔ
ؔ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ $BB4͕ఏڙ͢Δج൫ ؔ ؔ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ 1BB4͕ఏڙ͢Δج൫ ؔ ؔ ϋʔυΣΞ 04 ϥϯλΠϜ ΞϓϦέʔγϣϯ 'BB4͕ఏڙ͢Δج൫ ؔ ؔ ͍Ζ͍Ζཧͯ͘͠ΕΔͷͰɺࣗ ͕औΓѻ͏͖ϨΠϠ͚ͩʹؔ ৺ΛڱΊΒΕΔˠخ͍͠ʂ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ΠϯϑϥετϥΫνϟͷίʔυԽ ‣ ԾԽɾநԽ͞ΕɺϋʔυΣΞͷ Γ͘Γ͕Ӆṭ͞ΕͨΞϓϦέʔγϣ ϯ࣮ߦج൫ɺ΄΅७ਮͳιϑτΣ ΞͱಉʹऔΓѻ͑ΔΑ͏ʹɻ ‣ ίϚϯυҰͭͰԾϚγϯΠϯελϯε
Λ֬อͨ͠Γʜ ‣ ίʔυʹΑΓΠϯϑϥετϥΫνϟͷߏ Λهड़ɾཧͨ͠Γʜ ‣ ॴҦ*OGSBTUSVDUVSFBT$PEFʢ*B$ʣ 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 } } ... -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ நԽ͞ΕͨϦιʔεͷ$PEFԽ 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 } } ... -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ͦͷଞͷզʑΛࢧ͑Δଘࡏ ‣ ΞϓϦέʔγϣϯଟ͘ͷϛυϧΣΞʹࢧ͑ΒΕͯಈ࡞͢Δɻ ‣ σʔλετΞʢ,743%#ʣ ‣ ϩʔυόϥϯα ‣
FUD ‣ ϚωʔδυͳܗͰఏڙ͞Ε͍ͯΔϛυϧΣΞࢁ͋Δɻ ϛυϧΣΞ αʔόαΠυ8FCΞϓϦέʔγϣϯ αʔόαΠυ8FCγεςϜ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ʮΈ߹ΘͤΔ͜ͱͰ࡞Δʯ ‣ ΞϓϦέʔγϣϯͷ࣮ߦج൫ϛυϧΣΞʜ ‣ ϋʔυΣΞͷ੍͕ʢΫϥυϕϯμʹΑΓʣ͏·͘Ӆṭ͞ΕΔΑ͏ʹͳͬͨɻ ‣ ༰қʹมߋऔࣺબ͕Ͱ͖ΔΑ͏ʹͳͬͨɻ ‣
ΞϓϦέʔγϣϯ։ൃͱ͍ۙํ๏ͰߏͰ͖ΔΑ͏ʹͳͬͨɻ ‣ ݁ՌɺʮΈ߹ΘͤΔ͜ͱͰ࡞ΔʯతΞϓϩʔν͕औΓ͘͢ͳͬͨɻ ‣ ݱͷ8FCΞϓϦέʔγϣϯʹٻΊΒΕ͍ͯΔʮͨΓલ࣭ʯʢDGङϞσϧʣߴ͍ɻ ‣ ྫෳࡶͳػೳཁ݅ ߴՄ༻ੑ ߴͳಈ࡞ ‣ શ෦͔Β࡞ΕΔͷ͔͍͍͕ͬ͜ɺߴ͍ʮͨΓલ࣭ʯΛୡ͢Δͷࠔɻ ‣ ৴པͰ͖ΔͷΛΈ߹ΘͤΔ͜ͱͰɺϕʔεͷʮͨΓલ࣭ʯΛఈ্͛͠ͳ͕Βɺ ͕࣮ࣗݱ͢Δ͖͜ͱʹྗ͢Δ͜ͱ͕Ͱ͖Δʢخ͍͠ʂʣ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ ΞϓϦέʔγϣϯͷ࣮ߦج൫ϛυϧΣΞʜ ‣ ϋʔυΣΞͷ੍͕ʢΫϥυϕϯμʹΑΓʣ͏·͘Ӆṭ͞ΕΔΑ͏ʹͳͬͨɻ ‣ ༰қʹมߋऔࣺબ͕Ͱ͖ΔΑ͏ʹͳͬͨɻ ‣ ΞϓϦέʔγϣϯ։ൃͱ͍ۙํ๏ͰߏͰ͖ΔΑ͏ʹͳͬͨɻ
‣ ݁ՌɺʮΈ߹ΘͤΔ͜ͱͰ࡞ΔʯతΞϓϩʔν͕औΓ͘͢ͳͬͨʂ ‣ ݱͷ8FCΞϓϦέʔγϣϯʹٻΊΒΕ͍ͯΔʮͨΓલ࣭ʯߴ͍ɻ ‣ ྫෳࡶͳػೳཁ݅ ߴՄ༻ੑ ߴͳಈ࡞ ‣ ࢀߟङϞσϧ ‣ શ෦͔Β࡞ΕΔͷ͔͍͍͕ͬ͜ɺߴ͍ʮͨΓલ࣭ʯΛୡ͢Δͷࠔɻ ‣ ৴པͰ͖ΔͷΛΈ߹ΘͤΔ͜ͱͰɺϕʔεͷʮͨΓલ࣭ʯΛఈ্͛͠ͳ͕Βɺ ͕࣮ࣗݱ͢Δ͖͜ͱʹྗ͢Δ͜ͱ͕Ͱ͖Δɻ ϙΠϯτڥքͷଟ༷Խ ߏɾ࣮ߦڥͷมԽ͕ڧௐ͢Δ՝ ͦͷϛυϧΣΞͷྖҬʁ ͦͷಈ࡞ج൫ͷྖҬʁ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ ΞϓϦέʔγϣϯͷ࣮ߦج൫ϛυϧΣΞʜ ‣ ϋʔυΣΞͷ੍͕ʢΫϥυϕϯμʹΑΓʣ͏·͘Ӆṭ͞ΕΔΑ͏ʹͳͬͨɻ ‣ ༰қʹมߋऔࣺબ͕Ͱ͖ΔΑ͏ʹͳͬͨɻ ‣ ΞϓϦέʔγϣϯ։ൃͱ͍ۙํ๏ͰߏͰ͖ΔΑ͏ʹͳͬͨɻ
‣ ݁ՌɺʮΈ߹ΘͤΔ͜ͱͰ࡞ΔʯతΞϓϩʔν͕औΓ͘͢ͳͬͨʂ ‣ ݱͷ8FCΞϓϦέʔγϣϯʹٻΊΒΕ͍ͯΔʮͨΓલ࣭ʯߴ͍ɻ ‣ ྫෳࡶͳػೳཁ݅ ߴՄ༻ੑ ߴͳಈ࡞ ‣ ࢀߟङϞσϧ ‣ શ෦͔Β࡞ΕΔͷ͔͍͍͕ͬ͜ɺߴ͍ʮͨΓલ࣭ʯΛୡ͢Δͷࠔɻ ‣ ৴པͰ͖ΔͷΛΈ߹ΘͤΔ͜ͱͰɺϕʔεͷʮͨΓલ࣭ʯΛఈ্͛͠ͳ͕Βɺ ͕࣮ࣗݱ͢Δ͖͜ͱʹྗ͢Δ͜ͱ͕Ͱ͖Δɻ ϙΠϯτಛผͳߟྀࣄ߲ͷ૿Ճ ߏɾ࣮ߦڥͷมԽ͕ڧௐ͢Δ՝ Ұൠੑͷߴ͍ίϯϙʔωϯτΛ࠾༻͢Δ߹ɺར༻͠ ͳ͍ػೳͷதʹมͳͷ͕ͳ͍͔ʁ ࣮ߦڥͷதʹͦΕͦͷͷ͕ಛผͳ"1*Λ࣋ͭ ߹͋Δ͕ɺͦΕಛผʹอޢ͠ͳͯ͘େৎ͔ʁ -
TIJGUKTJOGP ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ &EHF4JEF*ODMVEFTʢ&4*ʣ มͳͷͷྫ ‣ &EHF4JEF*ODMVEFTʢ&4*ʣʜ9.-ϕʔεͷϚʔΫΞοϓݴޠ ‣ <esi:include>ͷλάʹΑΓɺҎԼ͕දݱͰ͖Δɻ ‣ αϒϦιʔεͷಈతͳऔಘɾల։
‣ ؆୯ͳมૢ࡞ ‣ 7BSOJTI 'BTUMZ ͷ༷ʑͳιϑτΣΞ͕&4*ͷॲཧʹରԠ͍ͯ͠Δɻ <body> <h1>Foobar</h1> <esi:include src="/a?q=$(QUERY_STRING{param1})" /> <esi:include src="/b?q=$(HTTP_COOKIE{'TEST'})" /> </body> &4*ॲཧܥ͕͜ͷ ෦Λల։͢Δ -
TIJGUKTJOGP ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ &EHF4JEF*ODMVEFT*OKFDUJPO มͳͷͷྫ ‣ &4**OKFDUJPOʜ&4*λάΛʢ944߈ܸͱಉ͡ཁྖͰʣόοΫΤϯυαʔό͔ ΒͷϨεϙϯεʹೖ͢Δ͜ͱͰɺ్தͷ&4*ॲཧܥΛૢ࡞͢Δ߈ܸɻ ‣ 443'߈ܸ)5510OMZϑϥά͕༩͞Εͨ$PPLJFͷϦʔΫʹར༻Ͱ͖Δɻ
ΫϥΠΞϯτ &4*Λղऍ͢Δ ϑϩϯτΤϯυαʔό όοΫΤϯυ αʔό <esi:include> Ṗͷλάͩͱࢥ͍ͬͯΔ <esi:include> &4*λάͩͱࢥ͍ͬͯΔ -
TIJGUKTJOGP ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ࣮ߦڥݻ༗ͷػೳɾ"1*ͷྫ ‣ ଟ͘ͷΫϥυϓϩόΠμʢྫ($1 "84 "[VSF ʣɺ࣮ߦڥʹؔ͢Δ ใɺͦͷΞϓϦέʔγϣϯͷಈ࡞ڥʹඥ͚ΒΕͨݖݶΛߦ͢ΔͨΊͷ τʔΫϯใͳͲΛฦ͢.FUBEBUB"1*Λ࣋ͭ
‣ ΞϓϦέʔγϣϯͷ༷ʹʮҙͷ)551ϦΫΤετΛൃߦͰ͖ɺͦͷ݁ՌΛ ӾཡͰ͖Δʯͱ͍͏Α͏ͳͷؚ͕·Ε͍ͯͨΒʁ࣮͕੬ऑͩͬͨΒʁ ΞϓϦέʔγϣϯ .FUBEBUB"1* ڥʹؔ͢Δใ ଞ"1*ͷΞΫηετʔΫϯΛཁٻ ฦ٫ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ 8FCηΩϡϦςΟ ‣ ٞͷൣғΛ໌֬ʹ͢ΔͨΊɺҎޙʮ8FCηΩϡϦςΟʯͱ͍͏ྖҬΛɺҎ ԼͷྖҬʹ͚ͯߟ͑Δɻ ‣ ΫϥΠΞϯταΠυ8FCγεςϜͷηΩϡϦςΟ ‣ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ
αʔόαΠυ 8FCγεςϜ ΫϥΠΞϯταΠυ 8FCγεςϜ ͪ͜ΒΛηΩϡΞʹอͭʹͲ͏͢Εʁ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ ΞϓϦέʔγϣϯΞʔΩςΫνϟͷมԽΛ࠶ߟ͢Δ αʔόαΠυ8FCγεςϜ ڞ༗σʔλετΞ ήʔτΣΠ .JDSPTFSWJDF .JDSPTFSWJDF
.JDSPTFSWJDF .JDSPTFSWJDF ϙΠϯτͷࢄ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ ΞϓϦέʔγϣϯΞʔΩςΫνϟͷมԽΛ࠶ߟ͢Δ αʔόαΠυ8FCγεςϜ ڞ༗σʔλετΞ ήʔτΣΠ .JDSPTFSWJDF .JDSPTFSWJDF
.JDSPTFSWJDF .JDSPTFSWJDF ϙΠϯτ࿈ܞͷ૿Ճ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ ΞϓϦέʔγϣϯͷ࣮ߦج൫ϛυϧΣΞʜ ‣ ϋʔυΣΞͷ੍͕ʢΫϥυϕϯμʹΑΓʣ͏·͘Ӆṭ͞ΕΔΑ͏ʹͳͬͨɻ ‣ ༰қʹมߋऔࣺબ͕Ͱ͖ΔΑ͏ʹͳͬͨɻ ‣ ΞϓϦέʔγϣϯ։ൃͱ͍ۙํ๏ͰߏͰ͖ΔΑ͏ʹͳͬͨɻ
‣ ݁ՌɺʮΈ߹ΘͤΔ͜ͱͰ࡞ΔʯతΞϓϩʔν͕औΓ͘͢ͳͬͨʂ ‣ ݱͷ8FCΞϓϦέʔγϣϯʹٻΊΒΕ͍ͯΔʮͨΓલ࣭ʯߴ͍ɻ ‣ ྫෳࡶͳػೳཁ݅ ߴՄ༻ੑ ߴͳಈ࡞ ‣ ࢀߟङϞσϧ ‣ શ෦͔Β࡞ΕΔͷ͔͍͍͕ͬ͜ɺߴ͍ʮͨΓલ࣭ʯΛୡ͢Δͷࠔɻ ‣ ৴པͰ͖ΔͷΛΈ߹ΘͤΔ͜ͱͰɺϕʔεͷʮͨΓલ࣭ʯΛఈ্͛͠ͳ͕Βɺ ͕࣮ࣗݱ͢Δ͖͜ͱʹྗ͢Δ͜ͱ͕Ͱ͖Δɻ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ ߏɾ࣮ߦڥͷมԽΛ࠶ߟ͢Δ ϙΠϯτ ڥքͷଟ༷Խ ಛผͳߟྀࣄ߲ͷ૿Ճ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ มԽ͔Β࠶ߟ͢Δ ‣ ࡢࠓͷมԽ͕ڧௐ͢Δ8FCηΩϡϦςΟʹؔ͢Δ՝ ‣ ͷࢄʜݩདྷαʔόαΠυ8FCΞϓϦέʔγϣϯͷ࣮தͰըҰత ʹऔΓѻΘΕ͍ͯͨηΩϡϦςΟͷ͕ɺࢄ͢ΔΑ͏ʹͳͬͨɻ ‣
࿈ܞͷ૿Ճʜͭͷૢ࡞ͷ࣮ݱͷͨΊʹɺෳͷιϑτΣΞ͕ؒ࿈ܞ͠ ͯಈ͘ػձ͕૿͖͑ͯͨɻܦ࿏҆શ͔ʁ༷ͷҰ؏ੑอͨΕ͍ͯΔ͔ʁ ‣ ڥքͷଟ༷Խ ಛผͳߟྀࣄ߲ͷ૿Ճʜಈ࡞ج൫ϛυϧΣΞ͕ଟ ༷Խͨ݁͠ՌɺΞϓϦέʔγϣϯ։ൃऀӡ༻ऀ͕ҙ͖͢૿͑ͨɻ ‣ ͦ͜Ͱɺ͜ͷྖҬͷηΩϡϦςΟΛɺҎԼͷ؍ʹׂͯ͠ߟ͑ͯΈΑ͏ɻ ‣ ηΩϡΞʹͭ͘Δ ‣ ηΩϡΞʹͭͳ͛Δ ‣ ηΩϡΞʹ͏͔͢͝ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ηΩϡΞʹͭ͘Δ ‣ ·ͣίϯϙʔωϯτͷ֤ʑ͕ηΩϡΞʹ࡞ΒΕ͍ͯΔ͜ ͱ͕ɺͯ͢ͷେલఏɻ ‣ 8FCΞϓϦέʔγϣϯΛ͜ͷΑ͏ͳϛΫϩͳࢹͰηΩϡ Ξʹ͢ΔͨΊʹɺ·ͣ࠷ݶͷࣝΛʹண͚Α͏ɻ ‣
ڭࡐ༷ʑଘࡏ͍ͯ͠Δ ‣ 08"41͕ϦϦʔε͍ͯ͠Δ֤छυΩϡϝϯτ ‣ 1PSU4XJHHFSͷ8FC4FDVSJUZ"DBEFNZ ‣ ʰମܥతʹֶͿ҆શͳ8FCΞϓϦέʔγϣϯͷ࡞Γํʱʢಙؙຊʣ .JDSPTFSWJDF ػೳ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ηΩϡΞʹͭͳ͛Δ ‣ ࡞ͬͨίϯϙʔωϯτಉ࢜ηΩϡΞʹͭͳ͛ΒΕ͍ͯΔ͔Ͳ͏͔ɺͱ͍͏؍ ඇৗʹॏཁʹͳ͖͍ͬͯͯΔɻ ‣ ʮηΩϡΞʹͭͳ͛Δʯͱ͍͏ߦҝΛɺ͞ΒʹҎԼͷͭʹϒϨΠΫμϯͯ͠ ߟ͑ΔͱΘ͔Γ͍͢ ‣
ηΩϡΞͳܦ࿏Ͱͭͳ͛Δ ‣ Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ .JDSPTFSWJDF .JDSPTFSWJDF ϛυϧΣΞ ΞϓϦέʔγϣϯ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ηΩϡΞͳܦ࿏Ͱͭͳ͛Δ ʮηΩϡΞʹͭͳ͛Δʯͷཁૉ ‣ αʔϏεؒͷ௨৴ΛͲ͏ηΩϡΞʹߦ͏͔ɺඇৗʹॏཁͳ؍ɻ ‣ αʔϏεؒͷ௨৴ܦ࿏ʹ౪ௌɾվ͟ΜΛૂ͏߈ܸऀ͕͍Δ͔ʜ ‣ ͭͷίϯϙʔωϯτ͕৵͞ΕΔ͜ͱͰɺࢥΘ͵ͱ͜Ζ͔Β௨৴͕ߦͳΘ
ΕΔ͔͠Εͳ͍ʜ ‣ ༷ʑͳϓϨΠϠʔ͕ؤு͍ͬͯΔ ‣ ྫ*TUJPͳͲͷ4FSWJDF.FTIϓϩμΫτͳͲ ‣ ྫ41*'&&ͳͲͷαʔϏεؒ௨৴ʹ͓͚Δ*EFOUJUZ$POUSPMج൫ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ‣ ͭͷγεςϜͷ࣮ݱʹؔΘΔʜ ‣ ༷͕૿͑Δ΄ͲɺͦΕΒͷ༷ؒͷҰ؏ੑ͕ʹͳΔ͜ͱ૿͑Δɻ ‣ ιϑτΣΞ͕૿͑Δ΄ͲɺͦΕΒͷ࣮ؒͷҰ؏ੑ͕ʹͳΔ͜ͱ૿͑Δɻ ‣ શࠃେձͰʢ8FCʹؔ࿈ͨ͠ʣҰ؏ੑͷ͕ܽট͘ͷྫͷ͏ͪɺҎԼΛऔΓ্͛ͨ
‣ )5513FRVFTU4NVHHMJOH ‣ Ωϟογϡʹؔ࿈ͨ͠߈ܸ ‣ ϨεϙϯεϘσΟͷੜʹؔΘΔॲཧܥͷ༷ࠩΛར༻ͨ͠߈ܸ Ұ؏ੑΛอͪͳ͕Βͭͳ͛Δ ʮηΩϡΞʹͭͳ͛Δʯͷཁૉ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ηΩϡΞʹ͏͔͢͝ ‣ ಈ࡞ج൫ΛηΩϡΞʹอͭ͜ͱ͍ͭͲ͓Γେࣄɻ ‣ DGཧ͍ͯ͠Δϊʔυͷύονద༻ ࢹܥͷඋ ‣
ͦͷಈ࡞ج൫ಛ༗ͷڥքηΩϡϦςΟϦεΫΛѲͭͭ͠ΞϓϦέʔγϣ ϯΛӡ༻ɾ։ൃ͢Δɺͱ͍͏ͷͭͷେࣄͳ؍Ͱ͋Δɻ ‣ ྫ.FUBEBUB&OEQPJOUTྨͷอޢ͞Ε͍ͯΔ͔ ‣ ྫաͳݖݶ༨ܭͳใ͕ΞϓϦέʔγϣϯʹ&YQPTF͞Ε͍ͯͳ͍͔ ‣ ۙ͜ͷτϐοΫʹֶ͍ͭͯͿͨΊͷϚςϦΞϧ͕ͲΜͲΜ૿͖͍͑ͯͯΔ ‣ ྫ/*4541ͷΑ͏ͳΨΠυϥΠϯ ‣ ྫ#VTUB,VCFͷΑ͏ͳϋϯζΦϯϚςϦΞϧ ‣ ྫIUUQTDPOUBJOFSTFDVSJUZEFWͷΑ͏ͳจݙ ‣ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ΫϥΠΞϯτଆʁ ‣ ٞͷൣғΛ໌֬ʹ͢ΔͨΊɺҎޙʮ8FCηΩϡϦςΟʯͱ͍͏ྖҬΛɺҎ ԼͷྖҬʹ͚ͯߟ͑Δɻ ‣ ΫϥΠΞϯταΠυ8FCγεςϜͷηΩϡϦςΟ ‣ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ
αʔόαΠυ 8FCγεςϜ ΫϥΠΞϯταΠυ 8FCγεςϜ ͪ͜ΒͷࠓͰ͖·ͤΜͰ͕ͨ͠ʜ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ΫϥΠΞϯτଆʁ ‣ ٞͷൣғΛ໌֬ʹ͢ΔͨΊɺҎޙʮ8FCηΩϡϦςΟʯͱ͍͏ྖҬΛɺҎ ԼͷྖҬʹ͚ͯߟ͑Δɻ ‣ ΫϥΠΞϯταΠυ8FCγεςϜͷηΩϡϦςΟ ‣ αʔόαΠυ8FCγεςϜͷηΩϡϦςΟ
αʔόαΠυ 8FCγεςϜ ΫϥΠΞϯταΠυ 8FCγεςϜ ͪ͜ΒͷࠓͰ͖·ͤΜͰ͕ͨ͠ɺ ࠷ۙ͜ͷʹؔͯ͠ͷॻ੶Λ্Ѹ͠·ͨ͠ -
TIJGUKTJOGP ͚ͩ͢͜͠ϚΫϩͳࢹ͔Βଊ͑Δ8FCηΩϡϦςΟ ·ͱΊ ͍·ͷʮ8FCηΩϡϦςΟʯͱ αʔόαΠυ 8FCγεςϜ ΫϥΠΞϯταΠυ 8FCγεςϜ ‣
͜ͷηΩϡϦςΟΛҎԼͷ̏؍͔Βߟ͑Α͏ ‣ ηΩϡΞʹͭ͘Δ ‣ ηΩϡΞʹͭͳ͛Δ ‣ ηΩϡΞʹ͏͔͢͝