Nawigacja
Ataki XSS i SQL Injection
Napisane przez Milka dnia 06 maja 2007 20:13 · 2 komentarze · 14140 czytań · · ·
Streszczenie:
Z jakimi atakami na strony mamy często do czynienia?Ataki na strony wykorzystujące bazy danych zdarzają się coraz częściej. Wykorzystywane są tutaj przede wszystkim ataki XSS i SQL Injection. Zapewne wielu z Was wystraszy już sama nazwa, a co dopiero mówić o tym, na czym to polega. Jednak zapewniam Was, że nie taki diabeł straszny, dlatego artykuł ten kieruję głównie do osób "zielonych", które chcą poszerzać swoją wiedzę.
1. Co to jest XSS i od której strony to ugryźć?
XSS (z angielskiego Cross Site Scripting) to metoda przechwytywanie poufnych informacji. W celu wydobycia danych, haker wykorzystuje tutaj zaufane źródło (witrynę). Dzieje się tak poprzez groźny kod HTML lub Java Script wprowadzany na przykład na forum. Złośliwy kod wykonywany jest przez osoby odwiedzające ową stronę. Atak hakera odbywa się przez wcześniej złamaną witrynę.
Oto graficzne wyjaśnienie problemu:
SQL Injection (z angielskiego "wstrzyknięcie SQL") to metoda polegająca na wysyłaniu, za pomocą dostępnego dla wszystkich formularza, takiego fragmentu tekstu (kodu), który zmienia oryginalne zapytanie SQL.
Wynikiem tego jest zmiana wyglądu strony lub jej działania.
Oto graficzne przedstawienie działania SQL Injection:
Zabezpieczanie się przed atakami XSS nie jest wcale trudne.
Pomoże nam w tym kilka prostych funkcji PHP, które służą do zabezpieczania skryptów:
a) htmlspecialchars() - przekonwertowanie znaków specjalnych (&, <, > itp.) na kody, które pozwalają ich wyświetlanie w tekście HTML (np. znak & zostanie zastąpiony & a m p - oczywiście bez spacji)
b) mysql_real_escape_string() - dodanie znaku \ przed potencjalnie groźnymi znakami w tekście
c) strip_tags() - wycięcie z tekstu znaczników PHP i HMTL.
4. Ochrona przed atakami SQL Injection
Zabezpieczanie się przed atakami SQL Injection zmusza do staranności, jednak zwykły użytkownik powinien sobie z tym poradzić. Aby dostatecznie ochronić nasze formularze przed złośliwymi zapytaniami SQL trzeba szczegółowo sprawdzać, jakie dane mogą być wprowadzone do formularza na naszej WWW.
Jeśli mamy do czynienia ze zmienną:
a) tekstową to umieszczamy ją w cudzysłowach
$test = ‘ WHERE data_i_czas=” ‘ . htmlspecialchars ($_POST[‘sql_injections’]).’ “ ‘
b) numeryczną to powinniśmy zbudować zapytanie tak, aby miało ono tylko i wyłącznie wartość numeryczną; w tym celu wykorzystać możemy funkcję intval(), która zmienia argument na liczbę całkowitą
$test = ‘ WHERE data_i_czas=’ . intval ($_POST[‘sql_injections’]);
I tak oto przebrnęliśmy razem przez wprowadzenie do zagadnienia ataków XSS i SQL Injection. Myślicie, że było aż tak strasznie? Moim zdaniem, chyba da się przeżyć i naprawdę warto przeczytać cokolwiek na ten temat i choć trochę wzbogacić swoją wiedzę. W końcu nie wiadomo, czy to właśnie nie wasza witryna padnie ofiarom hakerów. Mam oczywiście nadzieję, że tak się nie stanie, jednak zawsze lepiej dmuchać na zimne :)
Pozdrawiam Milka
milks92 [at] gmail [dot] com
Komentarze
Dodaj komentarz
Oceny
Zaloguj się lub zarejestruj, żeby móc zagłosować.