Ve foru pro webmastery Google se denně řeší problémy uživatelů aplikací Google, kteří si neví rady se škodlivými kódy a varováním před návštěvou jejich stránek. Doporučuji použít uvedené aktuální informace (a postupy řešení) uveřejněné na Google Blog ČR .
V dnešní době je většina webových stránek postavena na aplikacích, aby svým uživatelům poskytovala dobré služby. Vzhledem k interaktivní povaze těchto systémů, kde uživatelé svým vstupem výrazně ovlivňují obsahovou náplň, je důležité uvažovat o zabezpečení, aby se zabránilo zneužití těchto systémů.
Některé druhy pokusů o hackování a jak jim zabránit
Existuje mnoho různých druhů útoků, které mohou hackeři provádět, aby nad stránkami získali částečnou nebo úplnou kontrolu. Obecně jsou nejběžnější a nejvíce nebezpečné vkládání SQL (SQL injection) a tzv. cross-site scripting (XSS).
Vkládání SQL je způsob, jak vložit kousek škodlivého kódu do webové aplikace zneužitím nedokonalého zabezpečení na úrovni databáze. Je to opravdu účinný způsob, když uvážíme, že ke vložení škodlivého kódu může být zneužita běžná adresa URL či jakýkoli formulář (vyhledávání, přihlašování, e-mailová registrace). Pár příkladů vkládání SQL najdete na stránkách Web Application Security Consortium.
Existují samozřejmě preventivní opatření, pomocí kterých lze tomuto druhu útoků zabránit. Dobrým způsobem je například přidání vrstvy mezi formulář na straně uživatele (front end) a databázi na straně serveru (back end). V jazyce PHP se často používá rozšíření PDO k práci s parametry (někdy nazývanými „placeholders“ nebo „bind variables“) místo vkládání uživatelského vstupu do příkazu. Další způsob je ošetření vstupů, při kterém se vyhýbá všem nebezpečným znakům, které mohou mít přímý vliv na strukturu databáze. Například každý výskyt jednoduchých uvozovek ['] v parametru musí být nahrazen dvěma jednoduchými uvozovkami [''], aby byl vytvořen platný řetězcový literál SQL. To jsou jen dva z nejběžnějších kroků, které můžete provést, abyste zvýšili zabezpečení stránek a zabránili vkládání SQL. Na internetu můžete najít mnoho dalších konkrétních zdrojů, které se mohou hodit pro vaše potřeby (programovací jazyky, konkrétní webové aplikace ...).
Druhou technikou, kterou zde představíme, je cross-site scripting (XSS). XSS je technika založená na vložení škodlivého kódu na webovou stránku zneužitím nedokonalého zabezpečení webových aplikací. Tento druh útoku je možný tam, kde webová aplikace zpracovává data získaná z uživatelského vstupu a bez jakékoli další kontroly je vrací uživateli. Příklady těchto útoků najdete na stránkách Web Application Security Consortium.
Existuje mnoho způsobů, jak webové aplikace před tímto způsobem zabezpečit. Mezi snadné kroky, které lze provést, patří:
- Ošetření vstupu, který může být vložen do formuláře (viz například funkce strip tags v jazyce PHP);
- Úprava dat, aby se zabránilo přímému vložení potenciálně škodlivých znaků (viz například funkce htmlspecialchars v jazyce PHP);
- Vytvoření vrstvy mezi datovým vstupem a serverem (back end) k zabránění přímého vkládání kódu do aplikace.
Vkládání SQL a útoky na skripty mezi servery (XSS) jsou jen dva z mnoha způsobů používaných hackery k útokům na nevinné stránky a jejich zneužití. Obecné pravidlo zabezpečení zní, že je důležité mít vždy aktuální informace o problémech zabezpečení a především při používání softwaru třetích stran kontrolovat, zda máte nainstalovánu nejnovější dostupnou verzi. Mnoho webových aplikací je vytvářeno velkými komunitami, které nabízejí neustálou podporu a aktualizace.
Čtyři z největších komunit pro systémy správy obsahu (CMS) založené na otevřeném kódu – Joomla, WordPress, PHP-Nuke a Drupal – nabízejí na svých stránkách užitečné instrukce týkající se zabezpečení a velká komunitní fóra, kde mohou uživatelé řešit problémy a požádat o podporu.
Například WordPress na svých stránkách v sekci Hardening WordPress nabízí komplexní dokumentaci o tom, jak posílit zabezpečení jejich systému CMS. Joomla nabízí zdroje týkající se zabezpečení, zejména vyčerpávající seznam Security Checklist obsahující kroky, které by měli webmasteři provést, aby zlepšili zabezpečení webových stránek založených na systému Joomla. Na stránkách Drupal máte přístup k informacím o otázkách zabezpečení v sekci Security. Můžete se také přihlásit k odběru jejich e-mailů o zabezpečení, abyste měli nejnovější informace o aktuálních problémech. PHP-Nuke nabízí dokumentaci o Zabezpečení v kapitole 23 v sekci 'How to', věnované správě systému této platformy CMS. Mají také sekci nazvanou Hacked - Now what? (Hacknuté stránky – a co teď?), která nabízí instrukce k řešení problémů souvisejících s hackováním.
Několik způsobů, jak zjistit, že vaše stránky byly hacknuty
Jak je uvedeno výše, existuje mnoho různých druhů útoků, které mohu hackeři na stránkách provést, a existují různé způsoby, jak lze nevinné stránky zneužít. Když se hackerům podaří získat nad stránkami úplnou kontrolu, mohou nahradit obsah stránky, smazat veškerý obsah stránek (např. zrušit tabulky vaší databáze) nebo do nich vložit škodlivý software či aplikace kradoucí soubory cookie. Mohou také stránky zneužít ke spamování, například skrytím odkazů vedoucích na zdroje spamu nebo vytvořením stránek, které přesměrovávají na stránky se škodlivým softwarem. Pokud jsou tyto změny ve vaší aplikaci evidentní (například nahrazení obsahu stránky), můžete si aktivity hackerů snadno všimnout, avšak u jiných typů zneužití, zejména těch za účelem spamování, nebudu změny tak zřejmé. Google prostřednictvím svých produktů nabízí webmasterům některé způsoby, jak zjistit, zda jsou stránky hacknuté nebo bez dovolení pozměněné třetí stranou. Například při použití vyhledávání Google můžete zjistit typická klíčová slova přidaná hackery na váš web a identifikovat ty konkrétní stránky, které byly napadeny. Stačí otevřít google.cz a vyhledat své stránky pomocí operátoru 'site:' a hledat přitom komerční klíčová slova, která hackeři běžně používají pro účely spamování (například viagra, porn, mp3, gambling apod.):
site:example.com viagra
Pokud vyhledávací operátor 'site:' ještě neznáte, je to způsob, jak na Google zadat dotaz s omezením vyhledávání na konkrétní web. Například vyhledávání site:googleblog.blogspot.com najde pouze výsledky z Oficiálního blogu Google. Když do tohoto typu dotazu přidáte spamová klíčová slova, Google najde všechny indexované stránky vašeho webu, které tato spamová klíčová slova obsahují a které jsou s největší pravděpodobností hacknuté. Pokud tyto podezřelé stránky chcete zkontrolovat, stačí otevřít jejich verzi z archivu Google a uvidíte, zda jsou na stránkach nějaké zásahy. Potom napadené stránky můžete vyčistit a také zkontrolovat případné anomálie v konfiguračních souborech serveru (například na webových serverech Apache: .htaccess a httpd.conf).
Pokud se váš web ve výsledcích vyhledávání Google již nezobrazuje, mohlo by to znamenat, že Google již škodlivé následky hacknutí na vašem webu objevil a mohl váš web dočasně odstranit ze svého indexu kvůli porušení našich pokynů pro webmastery ohledně kvality.
Abyste měli přítomnost podezřelých klíčových slov na svých stránkách neustále pod dohledem, můžete použít službu Google Alerts a sledovat dotazy jako:
site:example.com viagra OR casino OR porn OR ringtones
Kdykoli budou tato klíčová slova nalezena v obsahu vašich stránek, budete upozorněni e-mailem.
K odhalení aktivity hackerů na svých stránkách můžete rovněž využít Nástroje pro webmastery od Googlu. Nástroje pro webmastery nabízejí statistiky o nejčastějších vyhledávacích dotazech vedoucích na vaše stránky. Tyto údaje vám pomohou sledovat, zda se vaše stránky umisťují ve výsledcích pro nesouvisející spamová klíčová slova. Údaje 'Co vidí prohledávač Googlebot' jsou také užitečné, protože uvidíte, zda Google na vašich stránkách nenachází nějaká nezvyklá klíčová slova bez ohledu na to, zda se umisťujete ve výsledcích při jejich vyhledávání. Pokud máte účet služby Nástroje pro webmastery a Google má za to, že vaše stránky byly hacknuty, budete obvykle upozorněni podle druhu útoku na vaše stránky:
- Pokud vaše stránky využívá třetí strana se zlými úmysly za účelem spamování (například skrytí odkazů nebo vytvoření spamových stránek) a náš prohledávač to zjistil, najdete obvykle v sekci Zprávy upozornění s podrobnými informacemi (ukázkou hacknutých adres URL nebo textem skrytých odkazů);
- Pokud jsou vaše stránky zneužity k šíření škodlivého softwaru, uvidíte na stránce 'Panel' svého účtu varování před škodlivým softwarem.
Byly vaše stránky hacknuty nebo šíří škodlivý software? Nejprve je od škodlivého softwaru vyčistěte, a poté proveďte jedno z následujících:
- Pokud vaše stránky byly hacknuty za účelem spamování, navštivte naši stránku s žádostí o nové posouzení prostřednictvím Nástrojů pro webmastery a požádejte o opětovné zahrnutí obsahu vašich stránek;
- Pokud vaše stránky mezi uživatele šířily škodlivý software, zašlete žádost o posouzení z hlediska škodlivého softwaru na stránce 'Panel' v Nástrojích pro webmastery.