A robots.txt fájlt már több, mint 25 éve használjuk, de sokan még mindig nem úgy ahogy kell. A helytelen használattal pedig hatalmas biztonsági kockázatokat okozhatunk és hackerek számára nyithatjuk meg a kiskapukat. Ebben a posztban bemutatom, hogy mire való a robots.txt fájl, hogyan kell használni, végül pedig tanulságként bemutatom, hogyan törhettem volna fel egy weboldalt a hibás robots.txt segítségével. Ha penge vagy és már ismered a robots.txt fájlt és használatát, akkor ugorj nyugodtan a feltörős részhez :)
A robots.txt fájl lényege, hogy a kereső és egyéb robotoknak eláruljon néhány dolgot az oldalad struktúrájával kapcsolatban. Ez egy nyilvánosan, bárki által hozzáférhető szöveges fájl a domained root könyvtárában.
Például: https://ad-ops.hu/robots.txt
Többek között ebben mondhatjuk meg a kereső robotoknak, hogy hol található az oldal sitemap-ja, milyen gyorsan engedjük a robotokat dolgozni az oldalunkon, melyik robotot engedjük vagy tiltjuk, de a leggyakrabban itt határozzuk meg, hogy mely oldalakat és könyvtárakat nem engedjük a robotoknak feltérképezni.
Mielőtt a kereső robotok ránéznének az oldalunkra, az első dolog, amit tesznek, hogy ránéznek a robots.txt fájlban található direktívákra, és az ebben foglaltak alapján dolgoznak tovább. A fájl használata nagyon egyszerű, jó szándékkal lett kitalálva, ugyanakkor helytelen használata magas biztonsági kockázatokat rejthet. Mielőtt ezekre rátérnénk lássuk hogyan is működik a robots.txt fájl.
A Google részletes specifikáción keresztül mutatja be, hogyan kell jó robots.txt fájlt készíteni. Most a leggyakrabban használt parancsokat mutatom be egy-egy példán keresztül.
User-agent: *
Ha ezt a sort tartalmazza a robots.txt fájl, akkor az összes robotnak zöld utat biztosítunk a teljes oldal feltérképezéséhez.
User-agent: * Disallow: /
A fenti két sor az összes robotnak, crawlernek megtiltja a teljes oldalunk feltérképezését.
User-agent: * Disallow: /folder/ User-agent: * Disallow: /file.php
A Disallow parancs használatával egész könyvtárak, vagy csak bizonyos fájlok feltérképezését tilthatjuk meg. A rendszerfájlokat/könyvtárakat teljesen felesleges megmutatnunk a nagyvilágnak, ahogyan az admin felületünkhöz sincs senkinek köze. Ezeket mind itt tilthatjuk le.
Crawl-delay: 10
Ezzel a paranccsal megakadályozhatjuk, hogy a crawlerek túl gyakran érjék el az oldalunkat. Ha egy nagy site-ra rászabadul egy kereső robot, akkor az akár be is lassíthatja az oldal betöltődését a felhasználóknak. Ezért a nagy siteok előszeretettel használják a crawl-delay parancsot, amivel korlátozhatjuk a robotoknak a hozzáférését az oldalunkhoz. A fenti példa azt mondja a robotoknak, hogy 10 másodpercenként crawlolhatják az oldalunk.
Visit-time: 0200-0630
A visit-time paranccsal azt is megszabhatjuk, hogy az oldalunkat mely időben crawlolhatják a robotok. A fenti példa 02:00 és 06:30 (UTC) között engedi a feltérképezést.
Request-rate: 1/10
A botok akár egymással párhuzamosan, több oldalunkat is crawlolják. A request-rate paranccsal ezt befolyásolhatjuk. Az 1/10 azt jelenti, hogy a crawlereknek 10 másodpercenként 1 oldalt engedünk megvizsgálni.
Most nézzünk meg egy konkrét példát:
User-agent: Googlebot Disallow: #A Google botnak engedélyezzük a teljes site crawlolását User-agent: Yandex Disallow: / #A Yandex kereső robotnak tiltjuk az egész oldalt User-agent: * Disallow: /admin/ #Az összes robotnak tiltjuk az admin könyvtár vizsgálatát Disallow: /logs #Tiltunk minden logs-al kezdődő könyvtárt és fájlt Sitemap: https://minta.hu/macilaci/ post-sitemap.xml Sitemap: https://minta.hu/macilaci/ page-sitemap.xml #Itt található a sitemap a szerveren. Egyszerre akár többet is megadhatunk. User-agent: * Disallow: /*.gif$ Allow: /minta.gif$ #Az összes robotnak tiltjuk a .gif képek crawlolását, kivéve egyet
Ha egy oldalt disallowra állítunk a robots.txt fájlban, attól az még simán megjelenhet a kereső találati listájában, főleg ha más oldalak is hivatkoznak rá! Bár a robotnak megmondtuk, hogy ne crawlolja, - nem is néz rá - viszont ha már korábban be volt indexelve, vagy hivatkozik rá oldal, akkor simán megtalálja és indexeli.
Ha tehát azt szeretnénk, hogy egy oldal meg se jelenjen a találati listában, akkor a Noindex robots meta taget kell használnunk az oldal head részében:
meta name="robots" content="noindex"
Ezzel egyidőben pedig figyeljünk arra, hogy ne szerepeljen az oldal disallowként a robots.txt fájlban.
Nagyon nagy gubancokat tudunk okozni, ha hibásan definiáljuk ezeket a parancsokat. Jól gondoljuk meg, hogy miket tiltunk ki, mert olyan tartalmat is tilthatunk, amit fontos lenne indexelni. Figyeljünk a kis és nagy betűkre, mert nem mindegy:
Disallow: /*.php #ez a parancs az összes .php-t tartalmazó fájlt és könyvtárat tiltja, ugyanakkor a minta.PHP fájl-t nem! Disallow: /fish #az összes fish-el kezdődő könyvtárat és fájlt tiltjuk, viszont nem tartozik bele Fish.php fájl, mert nagy betűvel kezdődik!
Sokan azt a hibát követik el, hogy a szerveren található bizalmas könyvtárakat (logok, jelszavak, adatbázisok, fájlok) is beteszik a robots.txt fájlba, hogy tiltsák ezeket a crawlerek elől. A hackereknek ez egy felhívás keringőre! Minden hacker a robots.txt fájlal kezdi a munkát, mert ebből látják, mik a tiltott könyvtárak, fájlok a szerveren. Az ilyen esetekre a jelszavas védelem, vagy IP korlátozás a megoldás, nem a robots.txt.
Ha a robots.txt fájlban csak egy konkrét fájl van disallow-ra állítva, az mindig felkelti az illetéktelenek figyelmét! Tudni fogják, hogy pontosan mi a célpontjuk. Állítsunk tehát inkább egész könyvtárakat disallow-ra, hogy legalább dolgozniuk kelljen kicsit.
Minden könyvtárba tegyünk egy index fájlt, hogy ezzel elkerüljük a könyvtár listázást. Ha egy könyvtár ugyanis nem tartalmaz ilyet, akkor a böngészők kilistázzák a könyvtár teljes tartalmát egy fa struktúrába. Ezt senki se szeretné!
Ha akár egy link is privát tartalomra mutat, akkor a kereső robotok bejutnak a könyvtárba! Sose linkelj privát könyvtárra.
A neten rengeteg tool van amivel a robots.txt fájlt tudjuk tesztelni, de a legtutibb módja ennek, ha a Google Robots.txt Tester eszközét használjuk.
(robots.txt tesztelő)
Egyszerűen csak írjuk át a betöltött robots.txt fájl tartalmát, majd nyomjunk a küldés gombra. Alatta pedig konkrét url-eket ellenőrizhetünk, hogy látja-e a robot vagy sem.
Ahogy korábban írtam a robots.txt fájl egy egyszerű szöveges fájl, ami a crawlereknek nyújt segítséget az oldal feltérképezéséhez. Ebben a fájlban adhatjuk meg azokat a fájlokat, könyvtárakat, amiket nem szeretnénk, ha a robotok feltérképeznének. Ilyenek lehetnek főként az oldalunk admin felülete, a log könyvtárak, vagy egyéb rendszer könyvtárak. Mivel ez egy nyilvános, bárki számára elérhető fájl a szerverünkön, ezért a hackerek előszeretettel kezdik az oldal feltörését ennek a fájlnak a vizsgálatával. Ugyanis általában benne van az admin felület elérhetősége, rosszabb esetben pedig olyan fájlok és könyvtárak is, amiknek semmi keresnivalójuk nem lenne ott.
Most egy konkrét, valós példán keresztül mutatom be, hogy a robots.txt hibás használatával milyen nagy biztonsági problémákat okozhatunk.
Itt egy IT cég, most is élő weboldalának a robots.txt fájlját látod:
(a fájl még mindig elérhető)
A weboldal URL címét szándékosan takartam ki, mert a hiba a mai napig megtalálható az oldalon. Mit is látunk a képen? A jó képességű fejlesztő olyan bizalmas könyvtárakat tett disallow listára, mint a backend, databases vagy resume könyvtárak. Talán úgy gondolta, hogy ezeket nagyon nem szeretné ha a robotok feltérképeznék, ezért biztos ami biztos, még ki is emelte ezeket a robots.txt fájlban. Ha ezek nem lettek volna megemlítve a robots.txt fájlban, nem is tudnánk a létezésükről, de így nem is kell több, nézzünk gyorsan beléjük :)
A databases könyvtárban ezt találtam:
(a teljes adatbázis publikus könyvtárba mentve)
Igen jól látod! A bekeretezett fájl a weboldal teljes adatbázis mentése!
Ebből hamar kiderül az oldal adatbázis struktúrája, látszik, hogy a felhasználók állásokra jelentkezhetnek. Az egyik tábla például tartalmazza az összes jelentkező személyes adatát:
(szemlyes adatok tömkelege)
Kicsit lejjebb görgetve pedig megtaláljuk az admin hozzáférési adatait is:
(az admin hozzáférés)
Az is látható, hogy a feltöltött önéletrajzokat a /resume/ könyvtárba tölti fel a rendszer. Belépve ebbe a könyvtárba ezt találtam:
(publikus könyvtárban az összes jelentkező önéletrajza!)
Ahogy a fenti példán látszik, a fejlesztő nagyon sok súlyos hibát vétett az oldalon, de a legrosszabb, hogy ezekre még fel is hívta a figyelmet a robots.txt fájlban. Amit tennie kellett volna, hogy ezeket a könyvtárakat nem teszi be a robots.txt-be, hanem jelszóval levédi őket. A másik pedig, hogy az adatbázis biztonsági mentését nem tároljuk ugyanazon a szerveren! Ezen kívül sok más probléma is volt az oldalon, például az admin bejelentkező felülete, de ez a poszt most nem erről szól.
Olvastam egy jó módszert arra, hogy mit tegyünk a robots.txt fájlt kutató hackerek ellen. A módszer lényege, hogy helyezzünk el csalit a robots.txt fájlban. Tegyünk bele például egy kimondottan figyelem felhívó sort:
Disallow: /secure/logins.php
Nincs olyan hacker, aki ne lenne kíváncsi ennek a tartalmára :)
A csapda az, hogy ha valaki megnyitja ezt a fájlt, akkor az IP címét automatikusan fekete listára tesszük és kitiltjuk az egész oldalról. Jó móka!
Havidíjas SEO és PPC ajánlatok Kis- és Középvállalkozások számára.
HAVIDÍJAS SEO AJÁNLATOK PPC AJÁNLATOK GA4 ANALITIKA BEÁLLÍTÁSA hírlevélre feliratkozóknak heti rendszerességgel küldjük meg a legfrissebb SEO híreket, posztokat és újdonságokat.