Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

16. diel - Konfiguračný súbor .htaccess

V predchádzajúcej lekcii, Ako na dvojfázové overenie v PHP (2FA) , sme sa zoznámili s dvojfázovým overením a to sme tiež implementovali.

Vitajte v ďalšej lekcii kurze bezpečnosti webových aplikácií. V tejto lekcii si ukážeme konfiguračný súbor .htaccess.

.htaccess

.htaccess je špeciálny súbor, ktorý umožňuje dodatočnú konfigurácii servera Apache. Servery Apache sú konfigurované pomocou súboru httpd.conf, ku ktorému má prístup len správca servera. Veľa webových aplikácií a stránok je na nejakom serveri hosťovaná a jej správcovi nemajú k samotnému nastavenie servera prístup, preto vznikol dodatočný konfiguračný súbor .htaccess, pomocou ktorého môžu správcovia webových aplikácií či stránok definovať dodatočné správania servera.

Medzi správanie, ktoré je možné pomocou súboru .htaccess definovať a na ktoré sa v dnešnej lekcii pozrieme, patrí:

  • Ošetrenie chybových stavov
  • Zaheslovanie prístupu do adresárov
  • Modifikácia prístupu
  • Nastavenie iného predvoleného súboru namiesto súboru index.php pod.
  • kešovania súborov
  • Kompresia prenášanie súborov

Vytvorenie súboru .htaccess

Súbor .htaccess budeme vytvárať v zložkách, pre ktoré chceme správanie servera upraviť. Modifikované správanie serveri sa dedí do podložiek. To znamená, že keď uložíme konfiguračný súbor .htaccess do koreňového priečinka našich stránok, modifikované správanie ovplyvní všetky stránky. Naopak to však neplatí a môžeme mať viac súborov .htaccess. Ak chceme napríklad zaheslovať len jednu zložku a ostatní nie, jednoducho vytvoríme nový .htaccess súbor v priečinku, ktorú chceme zaheslovať. Súbor musíme naozaj pomenovať s bodkou na začiatku a bez akejkoľvek koncovky.

Ošetrenie chybových stavov

Pomocou súboru .htaccess možno ošetriť chybové stavy. Napríklad, ak dôjde k chybe 404 - Not Found, môžeme používateľa presmerovať na nami vytvorenú stránku, ktorá užívateľa informuje o chybe. Samozrejme možno ošetriť aj iné chybové stavy.

Presmerovanie pri chybovom stave 404 - Not Found zariadime pomocou nasledujúceho príkazu:

ErrorDocument 404 cesta_k_dokumentu

Tento riadok pri chybe presmeruje používateľa na nami definovanú stránku. Súboru musíme zadať cestu z koreňového adresára servera, v mojom prípade by ošetrenia chyby vyzeralo nasledovne:

ErrorDocument 404 /work/htaccess/error.php

Po tom, čo by užívateľ otvoril neexistujúcu stránku, bol by presmerovaný na stránku error.php, ktorá by mohla vyzerať napríklad nasledovne:

Bezpečnosť webových aplikácií v PHP

Heslovanie adresárov

Môžeme tiež zaheslovať ľubovoľný adresár. K tomu budeme musieť vytvoriť súbor .htpasswd, ktorý bude uchovávať kombinácia užívateľských mien a hashovaných hesiel. Tento súbor nemusíme nutne uložiť do rovnakého adresára, ktorý chceme zaheslovať. Do súboru .htpasswd budeme ukladať údaje v nasledujúcom tvare:

login:hashovaneHeslo

Pre vytvorenie odtlačku hesiel môžeme použiť napríklad stránku https://hostingcanada.org/...d-generator/. Ako príklad do súboru uložíme používateľa s heslom aj menom admin. Do súboru teda uložíme užívateľské meno a hashovanie heslo v tvare:

admin:$apr1$te7uw8nl$h0A4O9tx8w0VOW/pPAwil1

Teraz musíme modifikovať náš .htaccess súbor, do neho pridáme kus kódu. Súbor .htaccess sa musí nachádzať v adresári, ktorý chceme zaheslovať:

AuthUserFile cesta_k_.htpasswd
AuthName "Název stránky"
AuthType Basic
require valid-user

Do prvého riadku musíme doplniť absolútnu cestu k súboru .htpasswd, v mojom prípade to bude:

AuthUserFile C:/xampp/htdocs/work/htaccess/.htpasswd

Keď sa teraz pokúsime otvoriť zaheslovanú zložku, privíta nás prihlasovací formulár:

Bezpečnosť webových aplikácií v PHP

Vyplnením formulára loginom admin a heslom admin, nám server dovolí otvoriť adresár.

Modifikácie prístupu

Ďalšou možnosťou, ako využiť súbor .htaccess, je zmena prístupu. Môžeme odmietnuť prístup užívateľom s konkrétnu IP adresou alebo z určitého bloku IP adries, dokonca môžeme odoprieť prístup úplne. Na druhú stranu môžeme tiež povoliť pristup užívateľom s konkrétnu IP adresou a všetkým ostatným prístup zamietnuť.

Prístup môžeme odoprieť pomocou tejto syntaxe:

deny from "parametr"

Priblíž z konkrétnej adresy 192.168.0.1 môžeme odoprieť teda takto:

deny from 192.168.0.1

Prístup z ľubovoľnej adresy z bloku 192.168 nasledovne:

deny from 192.168

A odoprieť prístup úplne všetkým pomocou slovíčka all:

deny from all

Na druhú stranu povoliť prístup môžeme pomocou príkazu:

allow from parametr

Kde "parametr" môže nadobúdať rovnakých hodnôt ako u príkazu deny from.

Nastavenie iného predvoleného súboru

Pomocou konfiguračného súboru môžeme tiež nastaviť novú defaultný stránku. Defaultne sú webové servery nastavené, že po otvorení adresára sa otvorí súbor index.php alebo index.html, ak takýto súbor existuje. Pomocou súboru .htaccess toto nastavenie môžeme zmeniť:

DirectoryIndex "soubor"

Do parametra "soubor" pridáme cestu k súboru, ktorý sa stane novým indexom:

DirectoryIndex newIndex.php

Naopak automatické otváranie súboru index môžeme úplne zakázať pomocou príkazu:

DirectoryIndex disabled

Moduly servera Apache

Pre posledné dve funkcie, ktoré si dnes ukážeme budeme využívať modulov servera Apache. Konkrétne modulu expires_module pre kešovanie a modulov mod_deflate a mod_filter pre kompresiu súborov. Modul expires_module je defaultne nainštalovaný na serveroch Apache od verzie 1.2, zvyšné moduly sú defaultne nainštalované od verzie 2.0. Problém je, že moduly nemusí byť povolené v konfiguračnom súbore servera httpd.conf. Pokiaľ k tomuto súboru máme prístup, stačí do neho dopísať nasledujúce riadky, reštartovať server a všetko by malo fungovať:

LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule filter_module modules/mod_filter.so

Môže sa tiež stať, že tieto príkazy budú v konfiguračnom súbore zakomentovány znakom #, v tomto prípade môžeme znak # jednoducho zmazať. V prípade, že nie sú moduly aktivované a ku konfiguračnému súboru nemáme prístup, musíme kontaktovať správcu servera.

Kešovania súborov

Kešovania (cachovanie) súborov využíva vyrovnávaciu pamäť užívateľovho prehliadača pre uloženie súborov. Jeho motiváciou je znížiť záťaž hardvéru a zvýšiť rýchlosť odozvy webového servera. Pri opakovanej návšteve stránky tak nemusí užívateľ sťahovať celú stránku a budú použité súbory z vyrovnávacej pamäte. Nevýhodou kešovania môže byť použitie zastaraných súborov z tejto pamäte a zobrazenie tak zastaralé podoby stránky.

Kešovania môžeme v súbore .htaccess povoliť nasledujúcim príkazom:

ExpiresActive On
ExpiresDefault A600

V prípade, že by nám server vracal chybu 500 - Internal Server Error, musíme sa uistiť, že máme vyššie spomínané moduly nainštalované a aktivované.

Tento príkaz nastaví kešovania súboru a ich expiračnú dobu, po ktorej budú z vyrovnávacej pamäte vymazané. Expiračná doba je daná v sekundách, v tomto prípade teda 600 sekúnd.

Dodatočne môžeme nastaviť expiračnú dobu súborov podľa ich typu, niekoľko ich si uvedieme:

ExpiresActive On
ExpiresDefault A600
ExpiresByType text/javascript A604800
ExpiresByType application/javascript A604800
ExpiresByType text/css A604800
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType image/x-icon A604800
ExpiresByType text/html A60

Kompresia prenášanie súborov

Posledná funkcia, ktorú si v dnešnej lekcii uvedieme, je kompresia prenášaných súborov. Toto nastavenie zabalí nami posielaná dáta do balíka, ktorý potom pošleme užívateľovi. Toto nastavenie pomôže znížiť veľkosť dát prenášaných po sietí.

Kompresiu môžeme povoliť pomocou série príkazov:

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Tu tiež platí, že pri chybe 500 - Internal Server Error, najskôr nemáme správne aktivované alebo nainštalované požadované moduly.

Opäť môžeme nastaviť kompresiu jednotlivých typov súborov.

Záver

Konfiguračný súbor .htaccess je užitočným nástrojom pri vývoji webových aplikácií či stránok. Je vhodné ho využiť minimálne pre ošetrenie chybových stavov alebo prístupu do určitých zložiek.

V ďalšej lekcii, Konfiguračný súbor .htaccess II. časť , si ukážeme ďalšie funkcie, ktoré môžeme vytvoriť pomocou konfiguračného súboru .htaccess.


 

Predchádzajúci článok
Ako na dvojfázové overenie v PHP (2FA)
Všetky články v sekcii
Bezpečnosť webových aplikácií v PHP
Preskočiť článok
(neodporúčame)
Konfiguračný súbor .htaccess II. časť
Článok pre vás napísal Jan Hranický
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity