Kategória: Návody Joomla

Zmenené: 6. apríl 2013

Čierna diera pre roboty

Už dávno sledujem články na perishablepress.com, stránke síce zameranej na WordPress, ale inak sa tam občas objavia informácie, ktoré sú platné pre web všeobecne. Medzi týmito informáciami som už dávno zachytil článok o pasci na neslušné roboty. Nepamätám si síce presne, kedy som ju na svojej stránke aplikoval, ale už to bude iste viac ako rok.

Princíp tejto pasce na roboty spočíva v tom, že si do stránky pridáte odkaz na špeciálny súbor PHP, ktorý sa postará o zablokovanie prístupu každému, kto si tento súbor otvorí. To, aby tento súbor neotváral každý je zabezpečené dvomi spôsobmi:

  • odkaz nie je zobrazený (display:none), takže bežný používateľ, ktorý prechádza vaše stránky, ho neuvidí, a teda na neho ani neklikne, ak sa teda dostane na stránku, buď skúma kód stránky alebo to je robot.
  • odkaz má nastavený parameter rel="nofolow", ktorý sa postará o odlíšenie slušných robotov, ktoré takýto odkaz nasledovať nebudú (a zároveň je uvedený ako zakázaná adresa v súbore robots.txt).

Čo potrebujete

Na funkčnosť tejto pasce (Čiernej diery), potrebujete webový server, ktorý podporuje PHP a podporu odosielania pošty. No a niekoľko kB miesta na disku…

Príprava

Začnite tým, že si stiahnete archív s nástrojom, ktorý nájdete na konci stránky s popisom inštalácie, ako archív .zip. Tento archív rozbaľte a výsledný adresár umiestnite, napríklad pomocou SFTP, niekde do adresára webového servera, napríklad priamo do koreňa:

/blackhole

Nastavte práva súboru blackhole.dat tak, aby mal server do neho právo zapisovať, ak si nie ste istý ako, jednoducho nastavte právo zápisu pre všetkých (666) alebo sa spýtajte správcu hostingu.

Varovanie

Môžete si samozrejme vybrať aj iné umiestnenie, ale potom si nezabudnite prispôsobiť cestu v odkaze,

Prispôsobenie

Najprv si prispôsobte informácie, jedná sa najmä o správne nastavenie odkazov a emailových adries v súbore index.php:

  • riadok 54 cesta k súboru robots.txtvašej stránky
  • riadok 56 cesta ku kontaktnej stránke
  • riadky 140 a 141 emailové adresy odosielateľa a prijímateľa informačných emailov

Ako aj v súbore blackohole.php:

  • riadok 53 kontaktné informácie

Varovanie

Zvážte použitie emailovej adresy, pretože kontaktná stránka už môže byť (touto pascou) blokovaná, ale nezabudnite, že väčšina návštev budú zlé roboty, tak by mala byť adresa nejakým spôsobom chránená alebo si urobte jednoduchý formulár na odoslanie emailu.

Ja som si, okrem týchto zmien, preložil všetky informačné správy, aby našinec vedel čo sa stalo a cudzinci nech sa trápia.

Kontrola úprav

Po vykonaných úpravách je vhodné skontrolovať, čo ste vlastne upravili, v prehliadači zadajte postupne dve adresy:

  • http://example.com/blackhole/index.php
  • http://example.com/blackhole/blackhole.php

Nezabudnite, že navštívením prvej stránky sa pridáte do zoznamu blokovaných umiestnení, čo napravíte vymazaním obsahu (mal by ta byť zatiaľ len váš stroj a prehliadač), prípadne len konkrétneho riadku, zo súboru blackhole.dat. Pozor, ak ho zmažete, nebude znova vytvorený a musíte ho vytvoriť (prekopírovať) ručne.

Spustenie

Po tom, ako si skontrolujte výsledok môžete pristúpiť k aplikovaniu Čiernej diery, tá spočíva v dvoch krokoch:

  • pridanie odkazu na Čiernu dieru
  • zablokovanie chytených

Pridanie odkazu

Ako som už spomínal, princíp tejto pasce spočíva vo vytvorení skrytého odkazu, ktorý sa bežným návštevníkom ani nezobrazí a okrem toho má nastavený parameter rel=“nofollow“, ako aj záznam v súbore robots.txt, ale pekne po poriadku.

Najprv si niekde do stránky, napríklad na koniec tesne pred značku </html>, pridajte túto značku:

<a style="display:none;" href="/blackhole/" rel="nofollow">Neklikajte na tento odkaz, inak vám bude odopretý prístup k tejto stránke!</a>

Upozornenie

Ak používate redakčný systém Joomla, použite súbor index.php svojej (prípadne všetkých používaných) šablóny.

Do súboru robots.txt pridajte tieto riadky:

User-agent: *
Disallow: /blackhole/

Ak už máte v tomto súbore riadok User-agent: *, pridajte len druhý riadok, ale môžete to pridať aj ako celok na koniec, nič tým nepokazíte.

Zablokovanie prístupu

Po vytvorení skrytého odkazu do pasce treba pridať príkaz, ktorý zablokuje prístup k stránke všetkým, ktorí sú vymenovaní v súbore blackhole.dat:

<?php include($_SERVER['DOCUMENT_ROOT'] . "/blackhole/blackhole.php"); ?>

Otázkou ostáva, kde tento riadok pridať. Ak používate nejaký redakčný systém (Joomla, WordPres, …), jednoznačne ho pridajte na začiatok hlavného súboru index.php, ak používate iné riešenie, tak si musíte vhodné miesto nájsť sami.

Rada

V Joomle (i iných RS) odporúčam použiť index.php šablóny, pretože pri aktualizácii redakčného systému bude hlavný index.php prepísaný.

S blokovanímprístupu som narazil na malý problém, a to že skript nedokázal nájsť súbor dát, preto som musel zmeniť riadok v súbore blackhole.php z:

$filename= "blackhole.dat"; // scanto preventduplicates

na:

$filename= dirname(__FILE__) ."/blackhole.dat"; // scanto preventduplicates

potom už všetko fungovalo ako fungovať má.

Ochrana súboru dát

Možno uznáte za vhodné zabrániť aj tomu, aby sa návštevníci šťúrali v obsahu vašej pasce, prístup k súboru blackhole.dat jednoducho zakážete pridaním do súboru .htaccess(stačí do toho v adresári blackhole) týchto riadkov:

# SECURE blackhole data
<Files blackhole.dat>
  Order allow,deny
  Deny from all
</Files>

Kontrola blokovania

najhoršia situácia nastáva v okamihu, keď si myslíte, že ste chránený a nie ste! Preto treba funkčnosť ochrany stránky pomocou tejto pasce overiť. Overíte to veľmi jednoducho, navštívte adresu http://vaša_doména/blackhole, to musí mať za následok pridanie záznamu pre váš počítač a prehliadač do súboru blackhole.dat, čoho výsledok musí byť odopretý prístup k vašej stránke.

Tip

Ak všetko funguje ako má, nezabudnite odstrániť záznam o sebe z blackhole.dat.

Záver

Sám som si toto riešenie aplikoval dosť opatrne. Asi rok som prevádzkoval len skrytý odkaz, bez samotného blokovania, v nádeji, že budem zbierať mená zlých robotov a pridávať ich do blokovania v .htaccess, ale smola, z celkového počtu 27 úlovkov, len 4 (slovom štyri) obsahovali použiteľnú informáciu o mene robota. Ostatné používajú reťazce Mozilla (MSIE), Opera a podobne.

Varovanie

Ešte jedna poznámka pre používateľov Joomla ak si pridáte blokovací riadok do hlavného súboru index.php, po každej aktualizácii Joomla skontrolujte, či nebol tento súbor prepísaný.

Tak Vám prajem väčšiu bezpečnosť a menej zbytočnej prevádzky na vašej webovej stránke.