Jest to blog poświęcony nowoczelnym technologiom ułatwiającym tworzenie aplikacji internetowych. Znajdziesz tutaj porady na temat CSS3, JavaScript, designu, web-usability, standardów W3C.
Cześć! Nazywam się Michał Środek. Z zawodu programista php, z zamiłowania gitarzysta oraz fanatyk GNU/Linuksa(openSUSE® w laptopie). W branży aplikacji internetowych od 9 lat. Prywatnie bez dzieci i kota.
Pracuję wciąż nad własnym elastycznym i wydajnym frameworkiem MVC, kilkoma portalami internetowymi oraz mniejszymi bibliotekami php. Czekam na wasze opinie, zgłoszenia błędów oraz pomysły na dalszy rozwój.
Ta część strony jest w trakcie budowy a moje prace tymczasowo niedostępne.
W przypadku pytań, ofert pracy oraz ciekawych pomysłów proszę się ze mną kontaktować. Możesz mnie znaleźć i wysłać PW na php.pl(SHiP), jamendo.com(michalsrodek), goldenLine.pl, facebook.com lub nk.pl
Przez ostatnich kilka tygodni zacząłem interesować się hackingiem bezpieczeństwem stron internetowych. Postanowiłem więc napisać co nieco na temat zabezpieczania stron przed takimi atakami jak np. SQL Injection, XSS. Pokażę równiez metody podglądania kodu źródłowego, lub uruchamiania własnego kodu php na stronach o słabych zabezpieczeniach lub złej konfiguracji serwera. Dzisiaj natomiast w luźny sposób opiszę co to ClickJacking.
Rozpocznijmy od małej gry, którą napisałem przy użyciu jQuery na potrzeby tego artykułu. Polega ona na bardzo szybkim klikaniu w pojawiający się czerwony prostokąt. Dasz radę? Zagraj!
ClickJacking polega na — tłumacząc dosłownie — „porywaniu kliknięć“. Zasada jest prosta. Niewidzialna ramka jest ukrywana pod stroną za pomocą css(a dokładniej z-index). Czeka ona w tle, aż potencjalna ofiara zechce kliknąć w pewne pole na ekranie. Wtedy warstwa ramki przechodzi nad warstwę gry. Użytkownik myśląc, że klika w prawdziwy element w rzeczywistości uruchamia mechanizm z ramki. Brzmi niepozornie? Atak taki wykorzystywany jest na wiele sposobów. Można np. umieścić w ramcę stronę facebook.com oraz odpowiednio sprecyzować pola w które należy kliknąć. Dzięki temu użytkownik zmieni swoje ustawienia dotyczące prywatności umożliwiając kradzież swoich danych osobowych i możliwość przeglądania zdjęć. Wbrew pozorom są setki niezabezpieczonych stron internetowych. Jedną z nich była kiedyś witryna konfiguracyjna wtyczki flash. Odpowiednio sprecyzowana strona pozwalała na zmianę ustawieć wtyczki tak aby możliwy był dostęp do kamery internetowej(sic!). Dzięki temu hakerzy mogli nawet podglądać swoje ofiary. Na szczęście Adobe wprowadziło zabezpieczenia, które uniemożliwiają przeprowadzenie takiego ataku.
Zwykli użytkownicy mogą zainstalować wtyczkę NoScript, która chroni przed tym atakiem. W przypadku twórców stron internetowych sprawa jest prosta. Nie wolno pozwalać uruchamiać naszej strony w ramce(tym bardziej, że ramki to już przestarzała technologia). Robi tak GMail, nasza-klasa, o2 i inni.
Kod(tzw. Framekiller) jest bardzo prosty:
<script type="text/javascript"> if (top!=self){ top.location.href=self.location.href; } </script>
W przypadku uruchomienia strony w ramce strona nadrzędna zostanie przekierowana na stronę w ramce.
oO… Tego się nie spodziewałem … Poczytałem i postanowiłem przetestować … Faktycznie… Można spreparować wiele stron. Ja postanowiłem stworzyć ‚nowy’ adres zmiany hasła … użytkownik podawał stare hasło i nowe… lecz zamiast nowego, do formularza trafiało moje. Nie pomyślałem nawet o tym…
Komentarz by Hs2 — 12 lutego 2010, 21:32
Dodanie w głównym pliku załatwia wszystko?
Komentarz by H4eX — 7 lipca 2010, 22:42
Dodaj w pliku, który ma być „odporny na ramki“.
Komentarz by Michał Środek — 7 lipca 2010, 22:45