ドキュメントルート配下に全てのPHPファイルが置かれていた環境をindex.phpだけにした話 / document root

ドキュメントルート配下に全てのPHPファイルが置かれていた環境をindex.phpだけにした話 / document root

PHPカンファレンス2018登壇資料

フレームワークの使われていないピュアPHPサービスで、ドキュメントルート配下に全てのファイルが置かれていたサービスを安全にするために大規模な修正を行ったお話です

B989cc865d53d8e26fdadac99727113c?s=128

Satoshi Kawashima

December 15, 2018
Tweet

Transcript

  1. ઒ౡܛ(.01FQBCP *OD 1)1ΧϯϑΝϨϯε υΩϡϝϯτϧʔτ഑Լʹ શͯͷ1)1ϑΝΠϧ͕ ஔ͔Ε͍ͯͨ؀ڥΛ JOEFYQIQ͚ͩʹͨ͠࿩

  2. ΞϓϦέʔγϣϯΤϯδχΞ ઒ౡܛ!OB[POPIJUP 4)ࣄۀ෦+6(&.νʔϜ

  3. D ຊ೔͓࿩͢͠Δ͜ͱ ຊ೔࣋ͪؼ͍ͬͯͨͩ͘͜ͱ ྺ࢙͋ΔPHPαʔϏεͰ҆શͳαʔϏεΛఏڙ͢Δˍ҆৺ͯ͠։ൃ͢ΔͨΊʹ େن໛ͳमਖ਼Λ͖͓ͯͨ͠࿩Λ͠·͢ ൃදͷ࠷ޙʹɺϐϡΞPHPͷެ։ϑΝΠϧΛ index.php͚ͩʹ͢Δํ๏ΛͳΔ΂͘ҰൠԽ͓ͯ͠ಧ͚͍ͨ͠·͢

  4. ࣄͷൃ୺ ୲౰͍ͯ͠ΔαʔϏεͷ՝୊ ՝୊ͷղܾ ՝୊1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝୊2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ

  5. w ೥݄೔Χϥʔϛʔγϣοϓෆਖ਼ΞΫηεൃੜ w IUUQTQFQBCPDPNOFXTJOGPSNBUJPO  ηΩϡϦςΟΠϯγσϯτ

  6. શαʔϏεͷ ηΩϡϦςΟݟ௚͠

  7. w ൿಗϑΝΠϧͷ8&#ΞΫηεՄೳʹͳ͍ͬͯͳ͍͔Λܧଓ తʹ؂ࢹͰ͖Δ࢓૊ΈΛ༻ҙ͢Δ w QNS QZBNBNVMUJSFRVFTU ͰνΣοΫ w IUUQTHJUIVCDPNQZBNBQNS ৽ͨͳηΩϡϦςΟن४ʢͷҰ෦ʣ

  8. w ൿಗϑΝΠϧ΁ͷΞΫηεېࢭ͸IUBDDFTTʹΑΔϒϥο ΫϦετ؅ཧʹΑ࣮ͬͯݱͨ͠ w ࠓޙͷ։ൃͰɺ৽͍͠ϑΝΠϧΛ௥Ճ͢Δ࣌ʹ͸๨Εͣʹ ϒϥοΫϦετΛߋ৽͢Δඞཁ͕͋Δ ൿಗϑΝΠϧ͸ݟ͑ͳ͘ͳ͕ͬͨ

  9. w Ϣʔβ༷ʹ҆શͳαʔϏεΛఏڙͰ͖ͳ͍ w ։ൃऀ͕҆৺ͯ͠։ൃͰ͖ͳ͍ ՝୊ײ

  10. ໨ඪ WEBެ։ྖҬʹ͸ ެ։͢΂͖ϑΝΠϧͷΈ͕ ஔ͔Ε͍ͯΔମ੍Λ੔͑Δ

  11. ࣄͷൃ୺ ୲౰͍ͯ͠ΔαʔϏεͷ՝୊ ՝୊ͷղܾ ՝୊1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝୊2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ

  12. +6(&.

  13. +6(&. αʔϏε։࢝ɿ2004೥2݄ ܧଓ೥਺ɿ14೥

  14. +6(&.ͱ͍͏1)1੡αʔϏε w ΄΅ϐϡΞ1)1 w ͍͍͕ͩͨϦϙδτϦϧʔτ ʹυΩϡϝϯτϧʔτ

  15. ʹશެ։

  16. ΍Γ͍ͨ͜ͱʢୈҰஈ֊ʣ repos root dot files repos root public app fuga.jpg

    dot files hoge.php assets piyo.php app fuga.jpg hoge.php assets piyo.php  QVCMJDσΟϨΫτϦΛ࡞Γ υοτϑΝΠϧҎ֎ͷ શϑΝΠϧΛҠಈ υΩϡϝϯτϧʔτΛมߋ ʢެ։ඇެ։ͷ֓೦͕ੜ·ΕΔʣ
  17. ΍Γ͍ͨ͜ͱʢୈೋஈ֊ʣ repos root public app fuga.jpg dot files hoge.php assets

    piyo.php repos root public app fuga.jpg dot files hoge.php assets piyo.php ඇެ։ϑΝΠϧΛ QVCMJDͷ֎΁Ҡಈ
  18. w ୈҰஈ֊͸͙͢ୡ੒Ͱ͖Δ w Ұ෦ઈରύεʹґଘͨ͠ίʔυΛमਖ਼ͯ͠΍ΔʢQVCMJD Λ௥Ճ͢Δʣඞཁ͸͋Δ w ୈೋஈ֊Λୡ੒͢Δʹ͸՝୊͕̎ͭ͋Δ ୈೋஈ֊ୡ੒ͷน͸ް͍

  19. ՝୊̍ ެ։ඇެ։ϑΝΠϧͬͯͲΕʁ

  20. w ௕͍ྺ࢙ͷதͰΤϯτϦϙΠϯτͱͳΔQIQϑΝΠϧ͕Ͳ Εͳͷ͔෼͔Βͳ͘ͳ͍ͬͯΔ w ͍͍ͩͨ͸ܦݧ্೺Ѳ͍ͯ͠Δ͕ɺ໢ཏͰ͖͍ͯΔ͔ͱ ໰ΘΕΔͱඍົ w ͦ΋ͦ΋ϦϙδτϦ͕ଟ͍͔Β͖֮͑Εͳ͍ w ʢ๻ͷ৔߹͸ʣ̍ΤϯδχΞɿ̒̍ϦϙδτϦ

    ެ։ϑΝΠϧͬͯͲΕʁ
  21. ՝୊̎ ϑΝΠϧͷҐஔ͕ಈ͔ͤͳ͍

  22. w େྔͷSFRVJSF@PODFͳͲʹΑͬͯQIQϑΝΠϧؒͷ૬ରత ͳҐஔؔ܎͕ݻఆԽ͞Ε͍ͯΔ w ϦϙδτϦ͚ͩͰ΋SFRVJSF@PODF͸ʙݸ͘ Β͍͋ͬͨΓ͢Δ͕ɺػցతͳमਖ਼͸೉͍͠ʢཧ༝͸ޙड़ ϑΝΠϧͷҐஔ͕ಈ͔ͤͳ͍

  23. େม

  24. ࣄͷൃ୺ ୲౰͍ͯ͠ΔαʔϏεͷ՝୊ ՝୊ͷղܾ ՝୊1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝୊2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ

  25. w Կઍݸ΋͋ΔQIQϑΝΠϧͷத͔Βެ։͢΂͖΋ͷΛಛఆ ͢Δ w ΞΫηεϩάΛͻͨ͢ΒಡΊ͹෼͔ΔͬͪΌ෼͔Δ͕ɺO ϦϙδτϦ෼ͷΛશ෦ಡΉͷ͸େม w NPE@SFXSJUFతʹΞΫηε63*ͱݺͼग़͢ϑΝΠϧΛมߋ ͞ΕΔٕज़͕࢖ΘΕ͍ͯΔͱා͍ w

    NPE@SFXSJUFࣗମ͸ӨڹΛ༩͑ͳ͍͕ɺଞʹͲΜͳݹͷ ٕज़͕࢖ΘΕ͍ͯΔͷ͔ෆ໌ͳͨΊෆ҆ ެ։ϑΝΠϧͷಛఆ
  26. w ͲͷQIQϑΝΠϧ͔ΒॲཧΛ։࢝ͨ͠ͷ͔ʢϝΠϯϑΝΠ ϧʣ͕ೖ͍ͬͯΔ w ΫʔϩϯͳͲͷ$-*࣮ߦͷ৔߹Ͱ΋ೖͬͯΔ @4&37&3<b4$3*15@/".&`>

  27. Ұఆظؒϩάग़ྗ͠ଓ͚ͯɺ ࣗಈͰެ։ϑΝΠϧΛಛఆ͢Δ ʘਓؒ͸ؤுΒͳ͍ʗ Oϲ݄ϩάΛग़͠ଓ͚Δ

  28. w ̍ʙ̒ϲ݄ͰશϦϙδτϦͷެ։ϑΝΠϧΛಛఆ׬ྃ ϩΪϯά݁Ռ

  29. ࣄͷൃ୺ ୲౰͍ͯ͠ΔαʔϏεͷ՝୊ ՝୊ͷղܾ ՝୊1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝୊2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ

  30. ϑΝΠϧͷ େҠಈ

  31. require_once͸ ϑΝΠϧͷҐஔؔ܎Λݻఆ͢Δ

  32. w ଞͷϑΝΠϧΛQIQϑΝΠϧͱͯ͠ಡΈࠐΜͰධՁ͢Δݴ ޠͷ੍ޚߏ଄ w JODMVEFJODMVEF@PODFSFRVJSFSFRVJSF@PODF͕͋Δ w ͍͍ͩͨSFRVJSF@PODF͕࢖ΘΕΔ w ίʔυΛෳ਺ϑΝΠϧʹ෼ׂ͢ΔͨΊͷखஈ SFRVJSF@PODFͱ͸ʁ

    /app/hoge.php /app/models/fuga.php ಡΈࠐΜͰධՁʢ࣮ߦʣ͢Δ
  33. w SFRVJSFSFRVJSF@PODF͸ಡΈࠐΈࣦഊ࣌ʹ'BUBM&SSPS w ͱʹ͔͘਺͕ଟ͍ w ಈతͳཁૉʢΧϨϯτσΟϨΫτϦɺJODMVEF@QBUIɺϝΠ ϯϑΝΠϧʣʹґଘ͍ͯ͠Δ w ੩తղੳπʔϧʢ*%&ͳͲʣͷαϙʔτ͸ड͚ΒΕͳ͍ ࣮͸मਖ਼ίετ͕ߴ͍

  34. w ͦͷ࣌ʑͷਓͷ޷Έͷॻ͖ํͰॻ͔Ε͍ͯͨ ແடংͳॻ͔Εํ

  35. w ͦͷ࣌ʑͷਓͷ޷Έͷॻ͖ํͰॻ͔Ε͍ͯͨ ແடংͳॻ͔Εํ D ػցతͳमਖ਼͕ͮ͠Β͍

  36. IUUQTQBDLBHJTUPSHQBDLBHFTOB[POPIJUPSFRVJSFQBUIpYFS ղܾ͢ΔͨΊͷ ϥΠϒϥϦΛ࡞ͬͨ

  37. w SFRVJSF@PODFεςʔτϝϯτʹடংΛ΋ͨΒ͢ w શͯઈରύεԽ͢Δ w ಈతͳཁૉʹґଘͤͣɺ੩తղੳπʔϧʢ*%&ʣͷαϙʔ τ͕ಘΒΕΔ w ύεղܾͷϕʔεύεΛϦϙδτϦϧʔτʹ౷Ұ͢Δ w

    ॻ͖ͬ΀ΓΛۉ࣭ʹ͢Δ SFRVJSFQBUIpYFS
  38.  શͯͷ1)1ϑΝΠϧ͔Βࣈ۟ղੳͰSFRVJSFεςʔτϝϯ τΛั·͑Δ  ϑΝΠϧύε෦෼ΛFWBMͰจࣈྻʹม׵͢Δ  ಡΈࠐΈઌϑΝΠϧΛҰҙʹಛఆ͢Δ w࣮ߦ࣌ʹ͔֬͠ఆͰ͖ͳ͍৔߹Ͱ΋ͳΔ΂͘ਪଌͯ͠ ಛఆ͢Δ 

    ৽͍͠ॻ͖ํʹର৅ͷεςʔτϝϯτΛमਖ਼͢Δ ݪཧ ৄࡉ͸ҎԼͷεϥΠυΛ͝ࢀর͍ͩ͘͞ IUUQTTQFBLFSEFDLDPNOB[POPIJUPSFHBTJQIQEFSFRVJSFPODFUPLBJV[IPVJXPUVJ[IJEFLJSVLBNPTJSFOBJ
  39. εςʔτϝϯτΛั·͑Δ

  40. εςʔτϝϯτΛั·͑Δ 5@3&26*3&@0/$& 5@$0/45"/5 @&/$"14&%@453*/( 5@3&26*3&@0/$& 5@3&26*3&@0/$& 5@3&26*3&@0/$& 5@$0/45"/5 @&/$"14&%@453*/( 5@7"3*"#-&

    5@$0/45"/5 @&/$"14&%@453*/( 5@$0/45"/5 @&/$"14&%@453*/( 5@$0..&/5 5@453*/( 5@$0..&/5 5@453*/(
  41. ϑΝΠϧύεจࣈྻͷղܾ require_once (dirname(dirname(__FILE__)). COMMON_DIR.“{$util}/path/to/file.php”);

  42. ϑΝΠϧύεจࣈྻͷղܾ define(“KNOWN_CONSTANT”, __DIR__ . “/known”); define(“COMMON_DIR”, ”/common”); $util = “/utility”;

    require_once (dirname(dirname(__FILE__)). COMMON_DIR.“{$util}/path/to/file.php”);
  43. ϑΝΠϧύεจࣈྻͷղܾ $path = eval(‘ define(“KNOWN_CONSTANT”, __DIR__ . “/known”); define(“COMMON_DIR”, ”/common”);

    $util = “/utility”; return (dirname(dirname(__FILE__)).COMMON_DIR. “{$util}/path/to/file.php”); ‘); QBUIUPBQQSPPUDPNNPOVUJMJUZQBUIUPpMFQIQ ˣ
  44. ಡΈࠐΈઌϑΝΠϧͷಛఆ छྨ ྫ ରԠํ๏ ઈରύε BQQSPPUQBUIUPpMFQIQ मਖ਼͢Δ ૬ରύε QBUIUPpMFQIQ ಡΈࠐΈઌϑΝΠϧΛ

    ಛఆ͔ͯ͠Βमਖ਼ JODMVEF@QBUIϕʔε QBUIUPpMFQIQ ಡΈࠐΈઌϑΝΠϧΛ ಛఆ͔ͯ͠Βमਖ਼ ύεղܾͰ͖ͳ͔ͬ ͨ 6/,/08/@$0/45"/5bQBUIUP pMFQIQ`
 ·ͨ͸ύεղܾதʹΤϥʔ मਖ਼͠ͳ͍ ಡΈࠐΈઌϑΝΠϧ͕෼͔Βͳ͍΋ͷ͸ɺ ύλʔϯϚονϯάͰϦϙδτϦ಺ʹϚον͢ΔϑΝΠϧ͕ͳ͍͔୳͠ɺ ͔ͭ͠ແ͚Ε͹ͦΕͩͱਪଌ͢Δ
  45. मਖ਼݁Ռ     ઈରύε ૬ରύε JODMVEF@QBUIϕʔε ෆ໌ʢղܾͰ͖ͳ͍ఆ਺΍ม਺ɺؔ਺΁ͷґଘʣ 

      77%ͷεςʔτϝϯτΛमਖ਼͠ɺۉ࣭ͳঢ়ଶʹͰ͖ͨ
  46. मਖ਼݁Ռ         

                     ઈରύε ૬ରύε JODMVEF@QBUIϕʔε ෆ໌ʢղܾͰ͖ͳ͍ఆ਺΍ม਺ɺؔ਺΁ͷґଘʣ     ϦϙδτϦ" ʢSFRVJSFεςʔτϝϯτݸʣ ϦϙδτϦ% ʢSFRVJSFεςʔτϝϯτݸʣ ϦϙδτϦ$ ʢSFRVJSFεςʔτϝϯτݸʣ ϦϙδτϦ# ʢSFRVJSFεςʔτϝϯτݸʣ
  47. ඇެ։ϑΝΠϧͷҠಈ repos root public app fuga.jpg dot files hoge.php assets

    piyo.php repos root public app fuga.jpg dot files hoge.php assets piyo.php ඇެ։ϑΝΠϧΛ QVCMJDͷ֎΁Ҡಈ ʢୈೋஈ֊ୡ੒ʣ
  48. ׬

  49. ͋Εʁ Τϥʔग़ͯΔ

  50. w pMF@FYJTUT ͳͲͰΤϥʔ͕ൃੜͩ͢͠ w ΧϨϯτσΟϨΫτϦ͔Βͷ૬ରύεͷมԽ͕ݪҼ ͜ΕͰ͸ऴΘΒͳ͍ɾɾɾ ΧϨϯτσΟϨΫτϦ͔Βͷ૬ରύεͰղܾ͍ͯ͠Δ

  51. ͜Μͳ໰୊ͩͬͨ repos root public app fuga.jpg dot files hoge.php assets

    piyo.php repos root public app fuga.jpg dot files hoge.php assets piyo.php QVCMJDQJZPQIQ͕ϝΠϯϑΝΠϧͰɺΧϨϯτσΟϨΫτϦ͕QVCMJDͷ৔߹ ΧϨϯτσΟϨΫτϦ͔Βͷ ૬ରύε͕มΘ͍ͬͯΔͷͰݟ͔ͭΒͳ͍
  52. ఢ͸SFRVJSF@PODF ͚ͩͰ͸ͳ͔ͬͨɾɾɾ

  53. w ૬ରύεΛड͚औΕΔΑ͏ͳౕΒશͯ w શ෦ڍ͖͛Εͳ͍͘Β͍ଟ͍ʢͲ͏΍ͬͯHSFQ͢Ε͹͍͍ ͷ͔෼͔Βͳ͍ʣ ΧϨϯτσΟϨΫτϦʹґଘ͢ΔౕΒ

  54. w શͯઈରύεʹमਖ਼ͨ͘͠͸͋Δ͕ɺͲΕ͚ͩͷ૊ΈࠐΈ ؔ਺૊ΈࠐΈΫϥεͰ࢖ΘΕ͍ͯΔͷ͔ಛఆ͖͠Εͳ͍ɺ HSFQͰ͖ͳ͍ ղফ͢Δͷ͸ࠔ೉ /PJEFB

  55. मਖ਼લޙͰ ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ ํ਑

  56. ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ repos root app dot files hoge.php piyo.php ࠓճͷ࡞ۀΛ࢝ΊΔલ·Ͱ͸ɺ ྫ͑͹QJZPQIQ͔Βॲཧ͕։͍࢝ͯͨ͠৔߹͸ɺ

    ͕ΧϨϯτσΟϨΫτϦͰɺͦͷঢ়ଶͰਖ਼͘͠ॲཧ͕ճ͍ͬͯͨɻ ͦͷঢ়ଶ΁໭͢ɻ
  57. ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ repos root public app dot files hoge.php piyo.php repos

    root public app dot files hoge.php piyo.php ϝΠϯϑΝΠϧΛݩʑͷҐஔʹ໭ͯ͠͠·͏
  58. ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ repos root public app dot files hoge.php piyo.php repos

    root public app dot files hoge.php piyo.php piyo.php ϝΠϯϑΝΠϧ΁ॲཧΛதܧ͢ΔͨΊ͚ͩʹଘࡏ͢Δɺಉ໊ͷެ։ϑΝΠϧ
  59. ׬

  60. ࣄͷൃ୺ ୲౰͍ͯ͠ΔαʔϏεͷ՝୊ ՝୊ͷղܾ ՝୊1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝୊2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ ΞϓϦέʔγϣϯϧʔςΟϯά͢Δ

  61. w ݱ୅ͷϑϨʔϜϫʔΫͬΆ͘ެ։ϑΝΠϧ͸JOEFYQIQͷ Έʹ͢Δ ΋͏ͪΐͬͱ͚ͩଓ͘Μ͡ΌΑ

  62. ΍Γ͍ͨ͜ͱ repos root public app hoge.php piyo.php fuga.php (&5BQQIPHFQIQ 1045BQQGVHBQIQ

    (&5QJZPQIQ
  63. ΍Γ͍ͨ͜ͱ (&5BQQIPHFQIQ 1045BQQGVHBQIQ (&5QJZPQIQ index.php repos root public app hoge.php

    piyo.php fuga.php શͯͷϦΫΤετΛ JOEFYQIQͰҰ౓ड͚Δ
  64. ΍Γ͍ͨ͜ͱ repos root (&5BQQIPHFQIQ 1045BQQGVHBQIQ (&5QJZPQIQ index.php JOEFYQIQҎ֎ͷެ։ϑΝΠϧΛ࡟আ ʢJOEFYQIQ͕ϧʔςΟϯά͢Δʣ public

  65. w ઃܭΛγϯϓϧʹͰ͖Δ w ΞϓϦέʔγϣϯͷϒʔτετϥοϓॲཧΛҰݩԽ w BSUJDMFTDPNNFOUTΈ͍ͨͳɺϑΝΠϧγεςϜͱ Ұக͠ͳ͍Α͏ͳϦΫΤετͰ΋ϧʔςΟϯάͰ͖ΔΑ͏ ʹͳΔ w NPE@SFXSJUFͷϧʔϧΛٵऩͰ͖Δ

    w ϐϡΞ1)1ϦϙδτϦΛϑϨʔϜϫʔΫԽ͢Δ༨஍͕ੜ· ΕΔ Կނ΍Δͷ͔ʁ
  66. w ϐϡΞ1)1ʹ͓͚ΔϦΫΤετͱϩδοΫͷϚονϯά͸ 8FCαʔό͕΍͍ͬͯͨ w ϦΫΤετͷ63*͔Β࣮ߦ͢ΔϑΝΠϧΛܾఆ͍ͯͨ͠ w ݴ͍׵͑Ε͹ɺΞϓϦέʔγϣϯϧʔςΟϯάԽͱ͸8FC αʔόͷϧʔςΟϯάϧʔϧΛΞϓϦέʔγϣϯ্Ͱ࠶ݱ ͢Δ͜ͱ ͜Ε·ͰͷϧʔςΟϯά

  67. w جຊతʹ͸ϦΫΤετ63*௨ΓͷϑΝΠϧ΁ϧʔςΟϯά ͢Δ͚ͩ w 8FCαʔόͷϚονϯάϧʔϧ͸ͪΐͬͱ͚ͩಛघͳϧʔ ϧ͕͋Δ w Ϛονϯάઌ͕σΟϨΫτϦͳΒɺ҉໧తʹͦͷσΟϨΫ τϦͷJOEFYQIQΛ୳ͯ͠ݺͼग़͢ w

    ҎԼͷΑ͏ͳ΁Μͯ͜ͳϦΫΤετͰ΋"QBDIF܅͕ؤ ுͬͯϚονϯάͯ͘͠Ε͍ͯͨͷͰ࠶ݱ͢Δඞཁ͕͋Δ ͪΐͬͱ͚ͩ໘౗ष͍ (&5IUUQFYBNQMFDPNBQQ IPHFGVHB
  68. w 8FCαʔόͷϚονϯάϧʔϧͷ࠶ݱํ๏͸͙͢ʹ͸෼͔ Βͳ͍ͷͰɺຊ൪؀ڥͰ͔֬Ίͳ͕Βগ͚ͣͭۙͮ͠Δ w ΧφϦΞϦϦʔεతʹຊ൪؀ڥͷཪͰࣗ෼Ͱ࡞ͬͨGBTU SPVUFʹΑΔϧʔςΟϯά݁ՌΛ֬ೝ͢Δ w "QBDIFͷϧʔςΟϯά݁ՌͱGBTUSPVUFͷϧʔςΟϯά ݁ՌΛൺֱ͠ଓ͚ɺEJ⒎͕͋ͬͨΒͦͷࢫͷϩάΛग़ྗ͠ ͯɺͦͷ౎౓௚͢

    ࠶ݱ͢Δ
  69. OJLJDGBTUSPVUFͰ࡞੒ 50%0

  70. w ׬੒͠ɺແࣄʹJOEFYQIQ͚ͩʹมߋͰ͖ͨ ϲ݄ޙ͘Β͍

  71. ׬

  72. ࣄͷൃ୺ ୲౰͍ͯ͠ΔαʔϏεͷ՝୊ ՝୊ͷղܾ ՝୊1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝୊2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ

  73. ࡞ۀ։࢝લͱݱࡏͷEJ⒎ repos root app hoge.php piyo.php public assets index.php fuga.jpg

    ݁ہશͯͷ1)1ϑΝΠϧ͸ ಉ͡Ґஔʹ໭ͬͨ EJ⒎͸QVCMJD഑Լ͚ͩ ΞϓϦέʔγϣϯϧʔςΟϯά͢Δ ΧϨϯτσΟϨΫτϦͷௐ੔΋͢Δ ϝΠϯϑΝΠϧ΋ެ։͠ͳ͍··
  74. w 1)1ϑΝΠϧΛҠಈͤ͞Δඞཁ͸ͳ͍ w QVCMJDΛ࡞ͬͯɺͦ͜ʹΞϓϦέʔγϣϯϧʔςΟϯά ͢ΔJOEFYQIQΛஔ͚ͩ͘ w ຊ൪؀ڥͰੜ੒͞Εͯɺ͔ͭ8&#ެ։͞ΕΔ΂͖ϑΝΠϧ ͕͋ΔͳΒɺੜ੒ઌ͸QVCMJD΁Ҡಈͤ͞Δඞཁ͸͋Δ ࣮͸؆୯ͩͬͨ

  75. ʹ ಉ͡ೖྗΛ༩͑Ε͹ɺ ಉ͡ग़ྗΛฦͯ͘͠ΕΔͱظ଴ग़དྷΔ ࠷ॳ͔Β͜͏ߟ͑Ε͹ྑ͔ͬͨ طଘͷPHPϑΝΠϧ܈ʢσΟϨΫτϦߏ଄ؚΉʣ ΛϒϥοΫϘοΫεͱଊ͑Δ

  76. ࠷ॳ͔Β͜͏ߟ͑Ε͹ྑ͔ͬͨ (&5BQQIPHFQIQ (&5QJZPQIQ /app/hoge.php /piyo.php ϝΠϯϑΝΠϧBQQIPHFQIQ ΧϨϯτσΟϨΫτϦBQQ )551ϦΫΤετʢೖྗʣ ͔ΒϝΠϯϑΝΠϧ͕ܾఆ͢Δ ϝΠϯϑΝΠϧ͕ܾఆ͢Δͱ೿

    ੜతʹܾఆ͢Δάϩʔόϧ৘ใ
  77. ࠷ॳ͔Β͜͏ߟ͑Ε͹ྑ͔ͬͨ (&5BQQIPHFQIQ (&5QJZPQIQ /app/hoge.php /piyo.php ϝΠϯϑΝΠϧBQQIPHFQIQ ΧϨϯτσΟϨΫτϦBQQ άϩʔόϧ৘ใʹґଘ͢Δ طଘͷϩδοΫ ͜͜Β΁ΜΛमਖ਼લޙͰ

    ҡ࣋͢Ε͹ྑͦ͞͏
  78. ࠷ॳ͔Β͜͏ߟ͑Ε͹ྑ͔ͬͨ (&5BQQIPHFQIQ (&5QJZPQIQ /app/hoge.php /piyo.php ϝΠϯϑΝΠϧBQQIPHFQIQ ΧϨϯτσΟϨΫτϦBQQ ͔͋ͨ΋ϧʔςΟϯάઌͷϑΝΠϧ͔Β ॲཧ͕։͔࢝ͨ͠ͷΑ͏ʹௐ੔͢Δ /public/index.php

  79. ϝΠϯϑΝΠϧΛಛఆ͢Δ ΞϓϦέʔγϣϯϧʔςΟϯάϧʔϧΛ࡞Δ QVCMJDΛ࡞ΓɺJOEFYQIQΛ഑ஔ υΩϡϝϯτϧʔτΛQVCMJD΁ͣΒ͢ ࠷୹ڑ཭Ͱߦ͘ͳΒ

  80. w ͜Ε͸͜ΕͰผͷՁ஋͕͋ΔͷͰແҙຯͰ͸ͳ͔ͬͨ w ϑΝΠϧͷҠಈ͕͠΍͘͢ͳͬͨ w JODMVEF@QBUI͕ࣺͯΒΕͨ w ੩తղੳͰ͖Δʢ*%&ͷαϙʔτ͕ड͚ΒΕΔʣ w ίʔυΛಡΉࡍͷ҉໧஌͕ͳ͘ͳΓɺ࣮ߦύεͷ௥੻͕

    ୭Ͱ΋ग़དྷΔΑ͏ʹͳͬͨ SFRVJSF@PODFͷमਖ਼͸ແҙຯʁ
  81. w JOEFYQIQ͚ͩʹ͢Δͷ͸ͦΜͳʹ೉͘͠ͳ͍ w ެ։ϑΝΠϧͷಛఆ͸ࣗಈͰग़དྷΔ w ΞϓϦέʔγϣϯϧʔςΟϯά͸গͣͭ͠࡞Ε͹͍͍ w طଘͷϑΝΠϧ܈ΛϒϥοΫϘοΫεͱଊ͑ͯɺमਖ਼લޙ ͷೖྗΛҡ࣋͢Δ ·ͱΊ