Soubor robots.txt se používá k instruování robotů. Standardní verze slouží pouze pro vkládání instrukcí čemu se mají roboti na webu vyhnout. Můžete přikázat jen konkrétnímu robotovi co má a co nemá procházet, anebo zakázat všem vstup do určitého adresáře. A tady můžeme narazit na bezpečnostní problém.
Většina webmástrů vkládá do robots.txt zákaz indexace adresáře s administrací webu. U běžně používaných redakčních systémů to není velký problém, protože je všeobecně známo, kde se administrace nachází. Například u WordPress je do adresář wp-admin. Ovšem pokud děláme web na zakázku můžeme potenciálnímu útočníkovi přesně oznámit, kde se administrace nachází a ulehčit mu tak práci.
Dalším problémem jsou adresáře s obrázky. Je to trochu pozůstatek ze starých dob, kdy jsme nechtěli říkat robotům, aby se koukali do těchto adresářů, zvláště pokud cestu k jednotlivým obrázkům/souborům generujeme skriptem. Ovšem to už nám je potom samotný skript k ničemu a případný útočník si vše může rovnou stáhnout. Samozřejmě dá se to ošetřit, ale proč zbytečně někomu pomáhat?
Proč robotům nic nezakazovat v robots.txt?
V Česku jsou v podstatě jen dva dominantní vyhledávače. Jedním je Seznam a druhým Google. Oba používají poměrně dobré roboty, kteří se umí slušně chovat. Místo toho co nemají indexovat se spíše snažte jim říct co indexovat mají a od toho je tu sitemap.xml, kde je seznam všech jednotlivých stránek, které chceme indexovat. Nic dalšího není přece třeba.
Samozřejmě pokud máte veřejně přístupnou administraci z venku, například pod nějakým odkazem můžeme do ní umístit meta tag noindex. Ten má v podstatě stejný efekt pro vyhledávače. Je tedy pravda, že můžeme takto odehnat i jiné roboty. Ovšem ti zlí roboti to stejně budou ignorovat. Ovšem toto téma se stejně týká spíše problému odhalení důležitých částí webů.
Ochrana
Ultimátní ochrana je samozřejmě co možná nejblíže serveru. Ve většině případů to je .htaccess a zákaz vstupu. Samozřejmě není možné zakázat přístup všem robotům z jejich IP adres, protože když jednoho zablokujete tak se vrátí oknem. Ideální je tak využití whitelistu a hraní mrtvého brouka. Běžně se používá vrácení stavového kódu 403 (zákaz přístupu) ale roboty celkem spolehlivě dokáže místo toho odradit 404 (stránka nenalezena). Protože si prostě myslí, že nic nenašli ačkoliv mají třeba odněkud tip, že by tam mělo něco být.
ErrorDocument 404 /chybova-stranka.php order deny,allow deny from all allow from 123.123.123.123
Stačí nahradit 123.123.123.123 vaší IP adresou.
Samozřejmě dá se to udělat i na úrovni PHP. Opět otestujete IP adresu a pokud není vaše tak vrátíte chybu 404.
Závěr
Ačkoliv se jedná v podstatě jen o prevenci před nechtěnými hosty určitě, je lepší být v dnešní době obezřetný. Na rozdíl od tvůrců redakčních systémů, kterých je několik a navíc mají velké množství fanoušků v komunitě, kteří po nich jejich práci kontrolují, můžete snadno udělat nějakou chybu. U vlastních řešení je tak lepší se snažit problémům vyhnout co to jen jde. Tam kde se nedá administrace najít nemusí dojít ani ke snaze o proniknutí na web. V případě whitelistu si navíc musí hledat útočník jinou cestu, čímž se můžete spoustě problémům vyhnout.
Obecně je používání robots.txt dnes spornou záležitostí. Na jednou stranu může zabránit indexaci webu, zvláště pokud je jeho část z nějakého důvodu veřejně přístupná, ale neměla by být. No v tomto případě už si asi provozovatel nějakou tu ostudu zaslouží 🙂
Tento článek byl byl přečten 10967 krát