Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][bezpieczeństwo] Czy można wywoływać zdalne skrypty za pomocą echo ?
Forum PHP.pl > Forum > PHP
lsmith
Tak jak w temacie:
Czy można jakoś za pomocą "echo" wywoływać jakieś skrypty z innych serwerów ?
Konkretnie:
register_globals jest włączone na serwerze i np. wywołuje taki link:
http://www.domena.pl/index.php?tytuł=bardzo_fajny_tytuł

a w kodzie gdzieś tam mam:
  1. <?php
  2. echo $tytuł;
  3. ?>


to czy jakiś sprytny gość wstawiając coś w adresie za tytul= może coś mi złego zrobić i wywołać jakiś skrypt ?

wyłączenie register globals nie wchodzi w gre, chyba, że da sie to zrobić dla pojedynczego użytkownika (użytkowników korzystających z serwera firmy hostingowej jest uuuu i jeszcze ciut ciut ), ale pewnie nie bo php.ini jedno tylko na serwerze..
akubiczek
Może wywołać dowolny kod javascript, a więc jest to dziura. Możesz łatwo się zabezpieczyć robiąc np. echo htmlspecialchars($tytul);

Czytałeś dokumentację? Można konfigurować register_globals indywidualnie.
Zeman
Cytat(akubiczek @ 16.04.2007, 14:46:32 ) *
Może wywołać dowolny kod javascript, a więc jest to dziura. Możesz łatwo się zabezpieczyć robiąc np. echo htmlspecialchars($tytul);

Czytałeś dokumentację? Można konfigurować register_globals indywidualnie.


Z tym javascriptem to taka dziura nie dziura. To co Pan namiesza poprzez swój parametr tytul ja mogę osiągnąć to samo bez parametru. Pamiętajmy, że javascript jest wykonywany po stronie serwera więc użytkownik najwyżej sam sobie namiesza w wyświetleniu strony.
nospor
Cytat
To co Pan namiesza poprzez swój parametr tytul ja mogę osiągnąć to samo bez parametru.

tja, z tym ze dzieki $tytul mozna samemu uruchomic komus na przegladarce wlasny kod co z kolei moze byc wykorzystane do ataku XSS.
To ze ktos sam sobie js wali to zadna dziura i sztuka

Cytat
Pamiętajmy, że javascript jest wykonywany po stronie serwera
Przejęzyczenie?
akubiczek
Dziwi mnie taka opinia człowieka, który na swojej stronie napisał:

"Stawiamy sobie za punkt honoru, dbałość o wysoką jakość naszych aplikacji."

tongue.gif

Owszem, w typowych sytuacjach jest to mało groźne, ale właśnie takie mało groźne niedopatrzenia są wykorzystywane do groźnych ataków. Fraza na dziś: Cross-site scripting.
Zeman
Cytat(lsmith @ 16.04.2007, 13:51:52 ) *
Tak jak w temacie:
Czy można jakoś za pomocą "echo" wywoływać jakieś skrypty z innych serwerów ?
...
to czy jakiś sprytny gość wstawiając coś w adresie za tytul= może coś mi złego zrobić i wywołać jakiś skrypt ?


Może wywołać skrypt na innym serwerze ale on się wykona na tym innym serwerze więc to będzie się miało raczej nijak do namieszania u Pana.

podstawiając za tytuł... hmm, nie widzę specjalnie zagrożeń, o ile Pan to zrobi z głową. Teoretycznie przykładowo co może zrobić to wstawić taki skrypt JS który rozwali walidacje JS'ową w formularzu albo samopoklika na stronie albo mu popsuje wygląd, no ale po co ktoś miałby sobie świadomie psuć wygląd winksmiley.jpg No i to będzie sie miało znowu nijak do namieszania na serwerze. Zawsze można srobić strip_tags($_GET['tytul']).

Cytat(nospor @ 16.04.2007, 14:59:56 ) *
Przejęzyczenie?


faktycznie, miało być po stronie przeglądarki oczywiście winksmiley.jpg


Cytat(akubiczek @ 16.04.2007, 15:01:34 ) *
Dziwi mnie taka opinia człowieka, który na swojej stronie napisał:

"Stawiamy sobie za punkt honoru, dbałość o wysoką jakość naszych aplikacji."

tongue.gif

Owszem, w typowych sytuacjach jest to mało groźne, ale właśnie takie mało groźne niedopatrzenia są wykorzystywane do groźnych ataków. Fraza na dziś: Cross-site scripting.


Zgadzam się i widzę zagrożenie, jednak tj napisałem jest to dziura nie dziura gdyż to samo mogę zrobić bez użycia parametrów, czyli że jak Ismitch wywali echo $title to i tak sobie uruchomie swój JS jak będzie mi na tym mocno zależało. Uruchamianie JS leży w gestii przeglądarki a więc wystarczy pomotać w przeglądarce. I Jak Pan by nie zabezpieczał skryptu to i tak uruchomię JS.
akubiczek
Nie ma zgody z mojej strony na ignorowanie zagrożenia smile.gif

Proszę nie myśleć jedynie o bezpośrednim bezpieczeństwie serwera, ale także o bezpieczeństwie użytkowników korzystających z serwisu. Nie będę zbędnie pisał, polecam przeczytanie tego artykułu:

http://en.wikipedia.org/wiki/Cross_site_scripting

Szczególnie rozdział "Real-world examples".
Zeman
Ok Panowie, przyznaje się do błędu, nie ma co kusić losu i ułatwiać życie haxorom. Lepiej żeby było trudniej niż łatwiej. Osobiście zwykłem walidować po stronie PHP wszystko co nadciąga z GET i POST i tak też proponuję pytaczowi.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.