Nawigacja
Ataki XSS i SQL Injection
Napisane przez Milka
dnia 06 maja 2007 20:13 ·
2 komentarze ·
14363 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ć.