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. ΍Γ͍ͨ͜ͱʢୈҰஈ֊ʣ 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σΟϨΫτϦΛ࡞Γ υοτϑΝΠϧҎ֎ͷ શϑΝΠϧΛҠಈ υΩϡϝϯτϧʔτΛมߋ ʢެ։ඇެ։ͷ֓೦͕ੜ·ΕΔʣ
  2. ΍Γ͍ͨ͜ͱʢୈೋஈ֊ʣ 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ͷ֎΁Ҡಈ
  3.  શͯͷ1)1ϑΝΠϧ͔Βࣈ۟ղੳͰSFRVJSFεςʔτϝϯ τΛั·͑Δ  ϑΝΠϧύε෦෼ΛFWBMͰจࣈྻʹม׵͢Δ  ಡΈࠐΈઌϑΝΠϧΛҰҙʹಛఆ͢Δ w࣮ߦ࣌ʹ͔֬͠ఆͰ͖ͳ͍৔߹Ͱ΋ͳΔ΂͘ਪଌͯ͠ ಛఆ͢Δ 

    ৽͍͠ॻ͖ํʹର৅ͷεςʔτϝϯτΛमਖ਼͢Δ ݪཧ ৄࡉ͸ҎԼͷεϥΠυΛ͝ࢀর͍ͩ͘͞ IUUQTTQFBLFSEFDLDPNOB[POPIJUPSFHBTJQIQEFSFRVJSFPODFUPLBJV[IPVJXPUVJ[IJEFLJSVLBNPTJSFOBJ
  4. ϑΝΠϧύεจࣈྻͷղܾ $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 ˣ
  5. ಡΈࠐΈઌϑΝΠϧͷಛఆ छྨ ྫ ରԠํ๏ ઈରύε BQQSPPUQBUIUPpMFQIQ मਖ਼͢Δ ૬ରύε QBUIUPpMFQIQ ಡΈࠐΈઌϑΝΠϧΛ

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

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

  9. ͜Μͳ໰୊ͩͬͨ 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ͷ৔߹ ΧϨϯτσΟϨΫτϦ͔Βͷ ૬ରύε͕มΘ͍ͬͯΔͷͰݟ͔ͭΒͳ͍
  10. ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ repos root public app dot files hoge.php piyo.php repos

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

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

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

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

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

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