Clickjacking i jak może być niebezpieczny
Pojęcie „kradzieży kliknięć” (ang. Clickjacking) nie jest nowe, To szkodliwa technika, która m.in. wprowadza nieświadomego użytkownika w błąd i wyłudza kliknięcia w elementy strony internetowej, które nie są rzeczywistą witryną docelową. Termin „clickjacking” zostało wymyślone przez Jeremiah Grossmana i Roberta Hansena w 2008.
Najczęściej wykorzystywane są w tym celu specjalnie przygotowane domeny / subdomeny o podobnie brzmiących nazwach, używające wbudowanych ramek. Dzięki temu, osoba trafiająca na podstawiona stronę widzi to, co spodziewała się zobaczyć, jednak nie jest świadoma tego, że porusza się w obrębie całkiem innej domeny.
Ta technika nie jest aż tak groźna dla stron docelowych, o ile użytkownik nie korzysta przy tym z poufnych danych. W przeciwnym razie, wpisując np. dane do zalogowania się na wyświetlanej w ramce stronie docelowej, może nieświadomie przekazać login i hasło osobie, która stosuje tę technikę. W tym przypadku, za jakiś czas okazać się może, że tracimy kontrolę nad kontem w obrębie serwisu, natomiast w skrajnych przypadkach, gdy dotyczyło to sklepu internetowego, do naszego domu zaczynają przychodzić przesyłki, których nie zamawialiśmy. Trudno jest wtedy udowodnić, że to nie my zamawialiśmy towary zwłaszcza, gdy dokonywaliśmy już tam wcześniej zakupów.
Innym przykładem clickjackingu jest przejmowanie konta na Facebooku. Możliwe jest to za pomocą umieszczonych na spreparowanej stronie skryptów przechwytujących nasze działania, gdy logujemy się do serwisu umieszczonego w ramce za pomocą naszego konta na Facebooku. Zarówno login, jak i hasło zapisywane są w bazie danych podstawionej strony i mogą być wykorzystane bez naszej wiedzy.
Możliwości i typów wyłudzanych danych przy zastosowaniu ramek <IFRAME> jest wiele. Są też metody na zabezpieczanie się przed takimi działaniami. Nazywane są Framekiller’ami. Jednak ich zastosowanie nigdy nie przyniesie 100% efektów, gdyż wraz z powstawaniem nowych zabezpieczeń, powstają równocześnie sposoby na ich obejście – tzw. Framekiller killers.
Oto kilka możliwości na implementacje framekillera na stronie:
- Dodajemy do strony nagłówek X-Frame-Options, np. w PHP:
header(„X-Frame-Options: deny”);
- Dołączamy do strony krótki skrypt JavaScript:
<script type=”text/javascript”>
if(top != self) top.location.replace(location);
</script>
- Dodajemy do pliku .htaccess (włączone mod_rewrite) następujące linie, gdzie example.com to domena zawierająca naszą stronę umieszczoną w ramce:
Order Allow,Deny
Allow from all
Deny from example.com