Varukoopia veebijuurikas on lähtekoodi leke
Sisust ja selle ülevaatamisest
Selles artiklis
Enne suure faili muutmist on loomulik see kõigepealt kopeerida. cp index.php index.php.vor-aenderung, seejärel töö. Kui see fail asub kataloogis, mida veebiserver avaldab, on kogu lähtekood just muutunud lihttekstina allalaetavaks — andmebaasi volitused, saladused, kõik, mida fail juhtub sisaldama.
Apache käivitab faili index.php PHP kaudu, sest see lõpeb laiendiga .php. Fail index.php.vor-aenderung ei lõpe laiendiga .php. See lõpeb laiendiga .vor-aenderung, millest Apache pole kunagi kuulnud, nii et ta teeb vaikimisi seda, mida teeb, ja saadab baidid.
Reegel, mille enamik inimesi kirjutab, ja miks see ei piisa
Tavaline kaitse on laiendite keelunimekiri: .bak, .orig, .save, .sql, .old. See püüab kinni faili, mis meelde tuli. Siin testituna andis see loend õige vastuse faili probe.bak puhul ja vale vastuse kõigi nende puhul:
index.php.vor-xyz— nii see tegelikult juhtusindex.php.2026-08-19index.php.kopiestyle.css.altindex.php.1
Kõik serveeriti 200-ga. Nimemuster, mida keegi ei mõelnud, ongi see, mida kasutatakse, sest varukoopiaid nimetatakse selle järgi, mis parajasti toimus.
Pöörake lõige ümber
Reegel, mis töötab, ei küsi, millised laiendid on keelatud. See küsib struktuurset küsimust: kas see failinimi sisaldab lähtekoodi laiendit, mis ei ole lõpus?
Kui sisaldab, on see koopia millestki, mis oli mõeldud täitmiseks, olenemata sellest, mida selle järel olev järelliide ütleb. index.php.anything sobib. style.css.anything sobib. Muster katab nimed, mida keegi pole veel välja mõelnud, ja see ongi kogu mõte.
Täna live-serveri vastu kontrollituna tagastavad kõik viis ülaltoodud nime nüüd 403, sealhulgas need, mida ei ole olemas — reegel keelab kuju, mitte faili.
Erand ja mida see õpetab
Ühel legitiimsel failinimel siin on täpselt see kuju: eelpakitud varad kirjutatakse kujul style.css.1787777226.gz, laiend keskel tahtlikult. Seega kannab reegel ühte kitsast erandit numbrilise segmendi jaoks, millele järgneb .gz, ja see fail tagastab 200, nagu peab.
Selline erand on koht, kus need reeglid tavaliselt valesti lähevad, seega tasub öelda, mis selle turvaliseks teeb: see on piisavalt kitsas, et ükski index.php.something.gz ei saa olla konstrueeritud lähtekoodi tagasi toomiseks, sest keskmine segment peab olema ainult numbrid. Laiem erand — „kõik, mis lõpeb .gz-iga“ — oleks kogu reegli tagasi andnud.
Ja kõige lihtsam nõuanne on endiselt see, mis teeb kõik selle tarbetuks: hoidke varukoopiad avaldatud kataloogist väljaspool. Reegel on võrk päevaks, mil see unustatakse, mitte luba lõpetada hoolimine sellest, kuhu koopia maandub.