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

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

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

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

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

Satoshi Kawashima

December 15, 2018
Tweet

More Decks by Satoshi Kawashima

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. w ೥݄೔Χϥʔϛʔγϣοϓෆਖ਼ΞΫηεൃੜ
    w IUUQTQFQBCPDPNOFXTJOGPSNBUJPO

    ηΩϡϦςΟΠϯγσϯτ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. +6(&.

    View Slide

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

    View Slide

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

    View Slide

  15. ʹશެ։

    View Slide

  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σΟϨΫτϦΛ࡞Γ
    υοτϑΝΠϧҎ֎ͷ
    શϑΝΠϧΛҠಈ
    υΩϡϝϯτϧʔτΛมߋ
    ʢެ։ඇެ։ͷ֓೦͕ੜ·ΕΔʣ

    View Slide

  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ͷ֎΁Ҡಈ

    View Slide

  18. w ୈҰஈ֊͸͙͢ୡ੒Ͱ͖Δ
    w Ұ෦ઈରύεʹґଘͨ͠ίʔυΛमਖ਼ͯ͠΍ΔʢQVCMJD
    Λ௥Ճ͢Δʣඞཁ͸͋Δ
    w ୈೋஈ֊Λୡ੒͢Δʹ͸՝୊͕̎ͭ͋Δ
    ୈೋஈ֊ୡ੒ͷน͸ް͍

    View Slide

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

    View Slide

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

    View Slide

  21. ՝୊̎
    ϑΝΠϧͷҐஔ͕ಈ͔ͤͳ͍

    View Slide

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

    View Slide

  23. େม

    View Slide

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

    View Slide

  25. w Կઍݸ΋͋ΔQIQϑΝΠϧͷத͔Βެ։͢΂͖΋ͷΛಛఆ
    ͢Δ
    w ΞΫηεϩάΛͻͨ͢ΒಡΊ͹෼͔ΔͬͪΌ෼͔Δ͕ɺO
    ϦϙδτϦ෼ͷΛશ෦ಡΉͷ͸େม
    w [email protected]తʹΞΫηε63*ͱݺͼग़͢ϑΝΠϧΛมߋ
    ͞ΕΔٕज़͕࢖ΘΕ͍ͯΔͱා͍
    w [email protected]ࣗମ͸ӨڹΛ༩͑ͳ͍͕ɺଞʹͲΜͳݹͷ
    ٕज़͕࢖ΘΕ͍ͯΔͷ͔ෆ໌ͳͨΊෆ҆
    ެ։ϑΝΠϧͷಛఆ

    View Slide

  26. w ͲͷQIQϑΝΠϧ͔ΒॲཧΛ։࢝ͨ͠ͷ͔ʢϝΠϯϑΝΠ
    ϧʣ͕ೖ͍ͬͯΔ
    w ΫʔϩϯͳͲͷ$-*࣮ߦͷ৔߹Ͱ΋ೖͬͯΔ
    @4&37&3

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. ϑΝΠϧͷ
    େҠಈ

    View Slide

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

    View Slide

  32. w ଞͷϑΝΠϧΛQIQϑΝΠϧͱͯ͠ಡΈࠐΜͰධՁ͢Δݴ
    ޠͷ੍ޚߏ଄
    w [email protected]@PODF͕͋Δ
    w ͍͍ͩͨ[email protected]͕࢖ΘΕΔ
    w ίʔυΛෳ਺ϑΝΠϧʹ෼ׂ͢ΔͨΊͷखஈ
    [email protected]ͱ͸ʁ
    /app/hoge.php /app/models/fuga.php
    ಡΈࠐΜͰධՁʢ࣮ߦʣ͢Δ

    View Slide

  33. w [email protected]͸ಡΈࠐΈࣦഊ࣌ʹ'BUBM&SSPS
    w ͱʹ͔͘਺͕ଟ͍
    w ಈతͳཁૉʢΧϨϯτσΟϨΫτϦɺ[email protected]ɺϝΠ
    ϯϑΝΠϧʣʹґଘ͍ͯ͠Δ
    w ੩తղੳπʔϧʢ*%&ͳͲʣͷαϙʔτ͸ड͚ΒΕͳ͍
    ࣮͸मਖ਼ίετ͕ߴ͍

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. w [email protected]εςʔτϝϯτʹடংΛ΋ͨΒ͢
    w શͯઈରύεԽ͢Δ
    w ಈతͳཁૉʹґଘͤͣɺ੩తղੳπʔϧʢ*%&ʣͷαϙʔ
    τ͕ಘΒΕΔ
    w ύεղܾͷϕʔεύεΛϦϙδτϦϧʔτʹ౷Ұ͢Δ
    w ॻ͖ͬ΀ΓΛۉ࣭ʹ͢Δ
    SFRVJSFQBUIpYFS

    View Slide

  38. શͯͷ1)1ϑΝΠϧ͔Βࣈ۟ղੳͰSFRVJSFεςʔτϝϯ
    τΛั·͑Δ
    ϑΝΠϧύε෦෼ΛFWBMͰจࣈྻʹม׵͢Δ
    ಡΈࠐΈઌϑΝΠϧΛҰҙʹಛఆ͢Δ
    w࣮ߦ࣌ʹ͔֬͠ఆͰ͖ͳ͍৔߹Ͱ΋ͳΔ΂͘ਪଌͯ͠
    ಛఆ͢Δ
    ৽͍͠ॻ͖ํʹର৅ͷεςʔτϝϯτΛमਖ਼͢Δ
    ݪཧ
    ৄࡉ͸ҎԼͷεϥΠυΛ͝ࢀর͍ͩ͘͞
    IUUQTTQFBLFSEFDLDPNOB[POPIJUPSFHBTJQIQEFSFRVJSFPODFUPLBJV[IPVJXPUVJ[IJEFLJSVLBNPTJSFOBJ

    View Slide

  39. εςʔτϝϯτΛั·͑Δ

    View Slide

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

    View Slide

  41. ϑΝΠϧύεจࣈྻͷղܾ
    require_once (dirname(dirname(__FILE__)).
    COMMON_DIR.“{$util}/path/to/file.php”);

    View Slide

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

    View Slide

  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
    ˣ

    View Slide

  44. ಡΈࠐΈઌϑΝΠϧͷಛఆ
    छྨ ྫ ରԠํ๏
    ઈରύε BQQSPPUQBUIUPpMFQIQ मਖ਼͢Δ
    ૬ରύε QBUIUPpMFQIQ
    ಡΈࠐΈઌϑΝΠϧΛ
    ಛఆ͔ͯ͠Βमਖ਼
    [email protected]ϕʔε QBUIUPpMFQIQ
    ಡΈࠐΈઌϑΝΠϧΛ
    ಛఆ͔ͯ͠Βमਖ਼
    ύεղܾͰ͖ͳ͔ͬ
    ͨ
    6/,/08/@$0/45"/5bQBUIUP
    pMFQIQ`

    ·ͨ͸ύεղܾதʹΤϥʔ
    मਖ਼͠ͳ͍
    ಡΈࠐΈઌϑΝΠϧ͕෼͔Βͳ͍΋ͷ͸ɺ
    ύλʔϯϚονϯάͰϦϙδτϦ಺ʹϚον͢ΔϑΝΠϧ͕ͳ͍͔୳͠ɺ
    ͔ͭ͠ແ͚Ε͹ͦΕͩͱਪଌ͢Δ

    View Slide

  45. मਖ਼݁Ռ




    ઈରύε ૬ରύε
    [email protected]ϕʔε ෆ໌ʢղܾͰ͖ͳ͍ఆ਺΍ม਺ɺؔ਺΁ͷґଘʣ



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

    View Slide

  46. मਖ਼݁Ռ
























    ઈରύε ૬ରύε
    [email protected]ϕʔε ෆ໌ʢղܾͰ͖ͳ͍ఆ਺΍ม਺ɺؔ਺΁ͷґଘʣ




    ϦϙδτϦ"
    ʢSFRVJSFεςʔτϝϯτݸʣ
    ϦϙδτϦ%
    ʢSFRVJSFεςʔτϝϯτݸʣ
    ϦϙδτϦ$
    ʢSFRVJSFεςʔτϝϯτݸʣ
    ϦϙδτϦ#
    ʢSFRVJSFεςʔτϝϯτݸʣ

    View Slide

  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ͷ֎΁Ҡಈ
    ʢୈೋஈ֊ୡ੒ʣ

    View Slide

  48. ׬

    View Slide

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

    View Slide

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

    View Slide

  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ͷ৔߹
    ΧϨϯτσΟϨΫτϦ͔Βͷ
    ૬ରύε͕มΘ͍ͬͯΔͷͰݟ͔ͭΒͳ͍

    View Slide

  52. ఢ͸[email protected]
    ͚ͩͰ͸ͳ͔ͬͨɾɾɾ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  58. ΧϨϯτσΟϨΫτϦΛม͑ͳ͍
    repos root
    public
    app
    dot files
    hoge.php
    piyo.php
    repos root
    public
    app
    dot files
    hoge.php
    piyo.php
    piyo.php
    ϝΠϯϑΝΠϧ΁ॲཧΛதܧ͢ΔͨΊ͚ͩʹଘࡏ͢Δɺಉ໊ͷެ։ϑΝΠϧ

    View Slide

  59. ׬

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  63. ΍Γ͍ͨ͜ͱ
    (&5BQQIPHFQIQ
    1045BQQGVHBQIQ
    (&5QJZPQIQ
    index.php
    repos root
    public
    app
    hoge.php
    piyo.php
    fuga.php
    શͯͷϦΫΤετΛ
    JOEFYQIQͰҰ౓ड͚Δ

    View Slide

  64. ΍Γ͍ͨ͜ͱ
    repos root
    (&5BQQIPHFQIQ
    1045BQQGVHBQIQ
    (&5QJZPQIQ
    index.php
    JOEFYQIQҎ֎ͷެ։ϑΝΠϧΛ࡟আ
    ʢJOEFYQIQ͕ϧʔςΟϯά͢Δʣ
    public

    View Slide

  65. w ઃܭΛγϯϓϧʹͰ͖Δ
    w ΞϓϦέʔγϣϯͷϒʔτετϥοϓॲཧΛҰݩԽ
    w BSUJDMFTDPNNFOUTΈ͍ͨͳɺϑΝΠϧγεςϜͱ
    Ұக͠ͳ͍Α͏ͳϦΫΤετͰ΋ϧʔςΟϯάͰ͖ΔΑ͏
    ʹͳΔ
    w [email protected]ͷϧʔϧΛٵऩͰ͖Δ
    w ϐϡΞ1)1ϦϙδτϦΛϑϨʔϜϫʔΫԽ͢Δ༨஍͕ੜ·
    ΕΔ
    Կނ΍Δͷ͔ʁ

    View Slide

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

    View Slide

  67. w جຊతʹ͸ϦΫΤετ63*௨ΓͷϑΝΠϧ΁ϧʔςΟϯά
    ͢Δ͚ͩ
    w 8FCαʔόͷϚονϯάϧʔϧ͸ͪΐͬͱ͚ͩಛघͳϧʔ
    ϧ͕͋Δ
    w Ϛονϯάઌ͕σΟϨΫτϦͳΒɺ҉໧తʹͦͷσΟϨΫ
    τϦͷJOEFYQIQΛ୳ͯ͠ݺͼग़͢
    w ҎԼͷΑ͏ͳ΁Μͯ͜ͳϦΫΤετͰ΋"QBDIF܅͕ؤ
    ுͬͯϚονϯάͯ͘͠Ε͍ͯͨͷͰ࠶ݱ͢Δඞཁ͕͋Δ
    ͪΐͬͱ͚ͩ໘౗ष͍
    (&5IUUQFYBNQMFDPNBQQ IPHFGVHB

    View Slide

  68. w 8FCαʔόͷϚονϯάϧʔϧͷ࠶ݱํ๏͸͙͢ʹ͸෼͔
    Βͳ͍ͷͰɺຊ൪؀ڥͰ͔֬Ίͳ͕Βগ͚ͣͭۙͮ͠Δ
    w ΧφϦΞϦϦʔεతʹຊ൪؀ڥͷཪͰࣗ෼Ͱ࡞ͬͨGBTU
    SPVUFʹΑΔϧʔςΟϯά݁ՌΛ֬ೝ͢Δ
    w "QBDIFͷϧʔςΟϯά݁ՌͱGBTUSPVUFͷϧʔςΟϯά
    ݁ՌΛൺֱ͠ଓ͚ɺEJ⒎͕͋ͬͨΒͦͷࢫͷϩάΛग़ྗ͠
    ͯɺͦͷ౎౓௚͢
    ࠶ݱ͢Δ

    View Slide

  69. OJLJDGBTUSPVUFͰ࡞੒
    50%0

    View Slide

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

    View Slide

  71. ׬

    View Slide

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

    View Slide

  73. ࡞ۀ։࢝લͱݱࡏͷEJ⒎
    repos root
    app
    hoge.php
    piyo.php
    public
    assets
    index.php
    fuga.jpg
    ݁ہશͯͷ1)1ϑΝΠϧ͸
    ಉ͡Ґஔʹ໭ͬͨ
    EJ⒎͸QVCMJD഑Լ͚ͩ
    ΞϓϦέʔγϣϯϧʔςΟϯά͢Δ
    ΧϨϯτσΟϨΫτϦͷௐ੔΋͢Δ
    ϝΠϯϑΝΠϧ΋ެ։͠ͳ͍··

    View Slide

  74. w 1)1ϑΝΠϧΛҠಈͤ͞Δඞཁ͸ͳ͍
    w QVCMJDΛ࡞ͬͯɺͦ͜ʹΞϓϦέʔγϣϯϧʔςΟϯά
    ͢ΔJOEFYQIQΛஔ͚ͩ͘
    w ຊ൪؀ڥͰੜ੒͞Εͯɺ͔ͭ8ެ։͞ΕΔ΂͖ϑΝΠϧ
    ͕͋ΔͳΒɺੜ੒ઌ͸QVCMJD΁Ҡಈͤ͞Δඞཁ͸͋Δ
    ࣮͸؆୯ͩͬͨ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  80. w ͜Ε͸͜ΕͰผͷՁ஋͕͋ΔͷͰແҙຯͰ͸ͳ͔ͬͨ
    w ϑΝΠϧͷҠಈ͕͠΍͘͢ͳͬͨ
    w [email protected]͕ࣺͯΒΕͨ
    w ੩తղੳͰ͖Δʢ*%&ͷαϙʔτ͕ड͚ΒΕΔʣ
    w ίʔυΛಡΉࡍͷ҉໧஌͕ͳ͘ͳΓɺ࣮ߦύεͷ௥੻͕
    ୭Ͱ΋ग़དྷΔΑ͏ʹͳͬͨ
    [email protected]ͷमਖ਼͸ແҙຯʁ

    View Slide

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

    View Slide