Jak uchránit textový soubor na serveru

3. únor (neděle)

RSS komentářů

Dnes jen krátce malý trik, jak uchránit soubory textového typu na serveru. Pokud si na www.example.com nahraji nějaký velikost-poprsi.txt, pak si jej logicky každý může přečíst na adrese www.example.com/velikost-poprsi.txt. Někdy je to ale nežádoucí – např. pokud si uchováváme konfigurační data aplikace v XML nebo v textovém souboru (třeba INI soubor, zpracovávaný pomocí parse_ini_file)­. 

Nastavení serveru přes .htaccess

Konfigurační velikost-poprsi.txt si například dáme do nějakého adresáře, do něhož umístíme i .htaccess soubor s obsahem

deny from all

Server pak všechny vnější požadavky na soubory ve složce zamítne (HTTP Error 403 – Forbidden).

Nemáme .htaccess

Co když nemáme nastavení přes .htaccess k dispozici? Použijeme malý trik, kdy soubor přejmenujeme na velikost-poprsi.php a znemožníme přístup zvenčí okamžitým ukončením vykonávání skriptu hned na začátku. Aplikace soubor načítá lokálně, takže jí to nijak nemusí vadit, pokud samozřejmě PHP kód řádně zakomentujeme.

; <?php exit; ?>
leve = A
prave = C

Pro XML by mělo fungovat něco podobného.

<!-- <?php exit; ?> -->
<conf>
  <const name="leve">A</const>
  <const name="prave">C</const>
</conf>

Samozřejmě, pokud použijete XML deklaraci, přijde vám na pomoc také parse error. Nelze se však na něj spoléhat a určitě je dobré vše pojistit oním PHP v komentáři, protože parse error může, ale nemusí nastat (nedojde ke kolizi, když má vaše PHP direktiva short_open_tag hodnotu 0).


,

Taky tu vyrostlo


  • Cr 3. 2. 2008 v 15:14

    To je tak trochu prasárna už z principu, rvát na začátek nějakého konfiguračního ini souboru nějaké, byť zakomentované, , ne?

     
  • Littlemaple 3. 2. 2008 v 17:48

    Já tomu říkám workaround :) . Řeší to výše zmíněný problém a jako konfigurák to funguje.

     
  • Martin Janda 4. 2. 2008 v 16:33

    Ze zkušenosti s asi 5 hostingy měli 4 z nich oblast, která nebyla přístupná přes http, jen přes ssh nebo přes http://ftp. To mi přijde nejlepší.

     
    • #4

    Použijte Texy! formátování!