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

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

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

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

B989cc865d53d8e26fdadac99727113c?s=128

Satoshi Kawashima

December 15, 2018
Tweet

Transcript

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

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

    ৽͍͠ॻ͖ํʹର৅ͷεςʔτϝϯτΛमਖ਼͢Δ ݪཧ ৄࡉ͸ҎԼͷεϥΠυΛ͝ࢀর͍ͩ͘͞ IUUQTTQFBLFSEFDLDPNOB[POPIJUPSFHBTJQIQEFSFRVJSFPODFUPLBJV[IPVJXPUVJ[IJEFLJSVLBNPTJSFOBJ
  7. 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 ˣ
  8. 44.

    ಡΈࠐΈઌϑΝΠϧͷಛఆ छྨ ྫ ରԠํ๏ ઈରύε BQQSPPUQBUIUPpMFQIQ मਖ਼͢Δ ૬ରύε QBUIUPpMFQIQ ಡΈࠐΈઌϑΝΠϧΛ

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

    मਖ਼݁Ռ         

                     ઈରύε ૬ରύε JODMVEF@QBUIϕʔε ෆ໌ʢղܾͰ͖ͳ͍ఆ਺΍ม਺ɺؔ਺΁ͷґଘʣ     ϦϙδτϦ" ʢSFRVJSFεςʔτϝϯτݸʣ ϦϙδτϦ% ʢSFRVJSFεςʔτϝϯτݸʣ ϦϙδτϦ$ ʢSFRVJSFεςʔτϝϯτݸʣ ϦϙδτϦ# ʢSFRVJSFεςʔτϝϯτݸʣ
  10. 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ͷ֎΁Ҡಈ ʢୈೋஈ֊ୡ੒ʣ
  11. 48.

    ׬

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

    ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ repos root public app dot files hoge.php piyo.php repos

    root public app dot files hoge.php piyo.php ϝΠϯϑΝΠϧΛݩʑͷҐஔʹ໭ͯ͠͠·͏
  14. 58.

    ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ repos root public app dot files hoge.php piyo.php repos

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

    ׬

  16. 63.
  17. 67.

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

    ҎԼͷΑ͏ͳ΁Μͯ͜ͳϦΫΤετͰ΋"QBDIF܅͕ؤ ுͬͯϚονϯάͯ͘͠Ε͍ͯͨͷͰ࠶ݱ͢Δඞཁ͕͋Δ ͪΐͬͱ͚ͩ໘౗ष͍ (&5IUUQFYBNQMFDPNBQQ IPHFGVHB
  18. 71.

    ׬

  19. 73.

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

    ݁ہશͯͷ1)1ϑΝΠϧ͸ ಉ͡Ґஔʹ໭ͬͨ EJ⒎͸QVCMJD഑Լ͚ͩ ΞϓϦέʔγϣϯϧʔςΟϯά͢Δ ΧϨϯτσΟϨΫτϦͷௐ੔΋͢Δ ϝΠϯϑΝΠϧ΋ެ։͠ͳ͍··