Kreiptis pagalbos

Atsakome el. paštu, dažniausiai per dvi dienas.

Google reCAPTCHA tikrina šį pateikimą, kad apsaugotų nuo piktnaudžiavimo; duomenys siunčiami Google. Scenarijus įkeliamas tik atvėrus šią formą.

← Visi įrašai

Atsarginė kopija žiniatinklio šaknyje nutekina pradinį kodą

Apie turinį ir jo patikrą

Šiame straipsnyje

Prieš redaguojant didelį failą natūralu pirmiausia jį nukopijuoti. cp index.php index.php.vor-aenderung, tada dirbti. Jei failas yra žiniatinklio serverio viešinamame kataloge, visas pradinis kodas ką tik tapo atsisiunčiamu paprastu tekstu — duomenų bazės prisijungimo duomenys, slaptos reikšmės, visa, kas tame faile yra.

Apache vykdo index.php per PHP, nes jo pabaiga – .php. Failo index.php.vor-aenderung pabaiga nėra .php. Jo pabaiga – .vor-aenderung, apie kurį Apache nėra girdėjęs, todėl atlieka numatytąjį veiksmą ir išsiunčia baitus.

Daugumos rašoma taisyklė ir kodėl jos nepakanka

Įprasta apsauga – draudžiamų plėtinių sąrašas: .bak, .orig, .save, .sql, .old. Jis aptinka failą, apie kurį pagalvota. Čia išbandytas sąrašas davė teisingą atsakymą failui probe.bak ir neteisingą atsakymą kiekvienam iš šių:

  • index.php.vor-xyz — kaip tai iš tikrųjų nutiko
  • index.php.2026-08-19
  • index.php.kopie
  • style.css.alt
  • index.php.1
failo pavadinimasatsakymasprobe.bak403index.php.vor-xyz200index.php.2026-08-19200index.php.kopie200style.css.alt200naivus sąrašas aptinka vieną iš penkių

Visi pateikti su 200. Panaudojamas pavadinimo šablonas, apie kurį niekas nepagalvojo, nes atsarginės kopijos pavadinamos pagal tai, kas tuo metu vyko.

Apversti atranką

Veikianti taisyklė neklausia, kurie plėtiniai draudžiami. Ji užduoda struktūrinį klausimą: ar failo pavadinime yra pradinio kodo plėtinys, kuris nėra pabaigoje?

Jei yra, tai kažko, kas turėjo būti vykdoma, kopija, kad ir ką sakytų po jo esantis prierašas. index.php.anything atitinka. style.css.anything atitinka. Šablonas apima ir dar nesugalvotus pavadinimus – tai ir yra visa esmė.

Šiandien patikrinus veikiančiame serveryje, visi penki ankstesni pavadinimai dabar grąžina 403, įskaitant neegzistuojančius — taisyklė atmeta formą, o ne failą.

Išimtis ir jos pamoka

Vienas teisėtas failo pavadinimas čia yra būtent tokios formos: iš anksto suglaudinti ištekliai rašomi kaip style.css.1787777226.gz, sąmoningai turintys plėtinį viduryje. Todėl taisyklė turi vieną siaurą išimtį skaitinei daliai, po kurios eina .gz, ir tas failas grąžina 200, kaip ir turėtų.

Būtent ties tokiomis išimtimis šios taisyklės paprastai sugenda, todėl verta pasakyti, dėl ko ši saugi: ji pakankamai siaura, kad nebūtų galima sukonstruoti pradinį kodą atskleidžiančio index.php.something.gz failo, nes vidurinėje dalyje gali būti vien skaitmenys. Platesnė išimtis — „viskas, kas baigiasi .gz“ — būtų panaikinusi visos taisyklės naudą.

O paprasčiausias patarimas lieka tas, dėl kurio viso šito neprireikia: laikykite atsargines kopijas už viešinamo katalogo ribų. Taisyklė – saugos tinklas dienai, kai tai pamirštama, o ne leidimas nebesirūpinti, kur atsiduria kopija.

Reklama