Pokaż wyniki 1 do 10 z 10

Temat: Stały adres w pasku adresu przeglądarki

  1. #1
    Zarejestrowany
    Jun 2006
    Postów
    6

    Domyślnie

    witam mam takie problem: chce przekazywac dane z jednej stronki do innej itd.
    do tego metoda post, get ewentualnie cookie no i lus wszystko sobie działa fajnie, ale nie zbyt fajnie ze wszystko jest widoczne tzn (metoda get) w adresie
    http://cosctam.php?dd=4 itd no i chciałbym zrobic tak jak jest na stronce
    ogame.pl
    cokolwiek sie kliknie aadres jest ten sam sie nie zmienia jedynie widac zmienne w pasku stanu przeglądarki no i to rozwiazanie bardzo sie mi podoba ze adres nie jest zasmiecany i ładnie wygląda no i chyba lecz nie jestem pewny nie da sie zmienic zmiennych recznie wpisując.

    nawet nie wiem w jakim dziale php jakiej książce tego szukac wiec prosze o pomoc gdzie szukac lub jakis przykład
    pozdrawiam

  2. #2
    [S.e.M.e.N] jest offline Michał Semeniuk
    Zarejestrowany
    May 2006
    Skąd
    Wawa
    Postów
    53

    Domyślnie

    Witaj!

    Za przykład dałeś ogame.pl, który skomentuję tak:

    Kwestia stałego, "ładnego" adresu w przeglądarce (zawsze ogame.pl) to jedynie prosty trick htmlowy.

    Zwróć uwagę jaki link wywołujesz klikając w screenshots, jest to: http://www.ogame.pl/portal/?go=screenshots&lang=pl . Dlaczego wyświetlany adres wciąż pokazuje ogame.pl? Ponieważ w domyślnym pliku głównym całej strony - index.php (http://www.ogame.pl = http://www.ogame.pl/index.php) - zawarty jest podział strony na ramki - w tym przypadku jedną wielką ramkę 100% na 100% szer i wys strony.

    Jeśli chcesz wiedzieć więcej na temat ramek i zrobić zupełnie świadomie własną polecam kursy html-a, dział ramki (frames). Możesz jednak pójść trochę na łatwiznę i użyć kodu html z ogame.pl/index.php - jest to:

    Kod html:
    <html>
    		<head>
    			<title>OGame.pl</title>
    			<meta name="author" content="Gameforge GmbH">
    
    [...]
    
    		</head>
    
    		<frameset rows="*,0" frameborder="no" border="0" framespacing="0">
    			<frame name="mainframe" src="/index.php?frameset=1" frameborder="0" scrolling="yes" noresize>
    		</frameset>
    
    		</html>
    Analiza tego kodu:
    Tworzy się ramka na całą stronę, bez borderu, w której wyświetla się strona "/index.php?frameset=1" - z pewnością domyślasz się o co chodzi z tym parametrem frameset=1 - ten sam plik index.php dostając zmienną GET o nazwie frameset - zwróci zawartość prawdziwej strony głównej a nie kolejny powyższy kod html tworzący ramkę.

    Dodatkowo powiem, że ta wersja kodu podziału na ramkę jest dosyć kiepska - nie uwzględnia przeglądarek, które mają wyłączoną obsługę ramek (zdarza się), zatem polecam jednak sięgnąć do jakiejś lektury.

    Co do wykorzystywania POST-a zamiast jakichkolwiek innych metod to nie polecam - zdarzyło mi się być na tak wykonanych hardcorowo stronach. Po pierwsze bardzo niewygodne do programowania, ponieważ każdy guzik to oddzielny formularz, albo gruby kod java script do obsługi jednego formularza. Po drugie występują problemy z odświeżaniem stron przez użytkowników - wartości postowe czasem są wysyłane ponownie, czasem nie. Po trzecie żadna wyszukiwarka nie zindeksuje podstron, które wyświetlają się tylko po przekazaniu POSTowych (niewidocznych) wartości. To nie jest już link z klasy <a href>.

    Są jeszcze inne metody uwarunkowane możliwościami serwera, ale myślę, że to jeszcze nie na teraz i ramki wystarczą.

    Co do wyszukiwarek to warto dodać, że i tak zindeksują Twoje podstrony z pełnym rozwinięciem zmiennych w adresie, a potem w wynikach wyszukiwania właśnie w pełnej okazałości je pokażą.

    Jeśli masz wciąż wątpliwości to pytaj - pomogę.

    Pozdrawiam

    P.S. Problem dotyczy html-a, dlatego wątek został przeniesiony do odpowiedniego forum.
    Ostatnio edytowane przez [S.e.M.e.N] : 06-28-2006 - 01:33

  3. #3
    Zarejestrowany
    Jun 2006
    Postów
    6

    Domyślnie

    dzieki działa
    myślałem ze to jakies skomplikowane jest a to rzeczywiście tania sztuczka html
    pozdrawiam

  4. #4
    Zarejestrowany
    Jun 2006
    Postów
    8

    Domyślnie ukrywanie danych paska adresu

    [S.e.M.e.N]

    "Są jeszcze inne metody uwarunkowane możliwościami serwera, ale myślę, że to jeszcze nie na teraz i ramki wystarczą" - Twoje słowa.
    Czy mógłbym Cię prosić o wskazanie alternatyw innych niż ramki? Masz na myśli moduł rewrite Apache'a?
    Także zależy mi na ukryciu paska adresu (jego zawartości poza nazwą domeny) i ciekawy jestem jakie masz pomysły w tym względzie.

    Dziekuję
    Pozdrawiam

  5. #5
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    najglupsze co mi przychodzi do glowy - uzyc kawalka tandetnego javascript'u do otwarcia stronki z okrojonymi kontrolkami - zostaw przwijanie, dorob javascript'em przyciski wstecz i naprzod a okienko otworz bez paska adresu i statusu... ktos jeszcze ma jakies rownie glupie pomysly?

  6. #6
    Zarejestrowany
    Jun 2006
    Skąd
    Brok
    Postów
    42

    Domyślnie

    Nie jestem pewien, ale chyba można było ustawić w Apache katalog główny przy użyciu pliku .htaccess

    Np. dla strony www.przyklad.com/katalog/podkatalog
    można było ustawić jakoś, w .htaccess że bylo to widoczne np. jako www.przyklad.com ale nie wiem czy dobrze pamietam.

  7. #7
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    mozna to zrobic na co najmniej kilka sposobow - dyskretny fetch albo aplikacja go nasladujaca, mod rewrite - owszem - pewnie sie da... ale kazde z tych rozwiazan:
    1. otwiera potencjalny wektor ataku ze wzgledu na swe skomplikowanie
    2. nie musi dzialac a nawet jak zadziala to moze szybko przestac
    3. obciaza serwer znacznie bardziej niz frameset lub trick z javascript'em

    Stara zasada mowi KISS :-) Keep It Simple Stupid - najprostsze rozwiazania sa zawsze najlepsze!

  8. #8
    [S.e.M.e.N] jest offline Michał Semeniuk
    Zarejestrowany
    May 2006
    Skąd
    Wawa
    Postów
    53

    Domyślnie mod-rewrite

    Mówiąc o innym sposobie miałem na myśli właśnie mod-rewrite. Jest to taki moduł apache-a, który umożliwia maskowanie autentycznego adresu.

    Przykładowo normalne (bez włączonego i skonfigurowanego mod-rewrite) wywołanie adresu typu

    http://www.strona.com/katalog1/katalog2/

    powoduje sprawdzenie przez serwer czy rzeczywiście takie katalogi istnieją, a jeśli istnieją wyszukanie w katalog2 pliku strony głównej (tj. index.htm, index.html, index.php). Ewentualnie może się pokazać listing plików w tym katalogu.

    Co się zmienia przy mod-rewrite?
    Mod-rewrite włącza się i konfiguruje w .htaccess. Tam też wpisuje się wyrażenia regularne, które są niezbędne, aby jaki kolwiek adres został zamaskowany. Przykładowo podam taką regułę, żeby pasowała do powyższego przykładu linku z katalogami

    Kod:
    RewriteEngine On
    
    RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ /index.php?par1=$1&par2=$2
    Co oznacza ten szlaczek? Jest to wyrażenie regularne perla - takie same stosuje się do weryfikacji np. adresu e-mail przy użyciu funkcji ereg w php (więcej na php.net).

    Interpretacja serwera: jeśli w adresie wystąpi wyrażenie1 spełniające regułę [a-z][A-Z][0-9], po nim wystąpi /, potem kolejne wyrażenie2 [a-z][A-Z][0-9], a na końcu /, to zinterpretuj to wywołanie jako wywołanie pliku index.php?par1=$1&par2=$2, gdzie $1 to wyrażenie1 (z pierwszego nawiasu w regule) ,a $2 to to drugie. Używając przykładu z topu, wywołanie adresu:

    http://www.strona.com/katalog1/katalog2/

    będzie oznaczało po interpretacji mod-rewrite

    http://www.strona.com/index.php?par1=katalog1&par2=katalog2

    W każdym przypadku, kiedy reguła nie będzie spełniać np. warunków [a-z][A-Z][0-9] przepisanie interpretacji nie odbędzie się, zatem serwer będzie poszukiwał plików w danym katalogu.

    Jak widzisz dzięki mod-rewrite możemy sprawnie zaoszczędzić swoim gościom patrzenie na niemiłe dla oka szlaczki w adresie. Mod-rewrite jest na prawdę dobrą rzeczą, wymaga jedynie wyćwiczenia się trochę w tych wyrażeniach regularnych.

    Tak, rzeczywiście jest to pewnego rodzaju obciążenie dla serwera, choć w przypadku dobrych serwerów komercyjnych nie ma to dla nich żadnego znaczenia. Ramki męczą komputer klienta, to już lepiej pomęczyć serwer

    Nie, jeśli chodzi o kwestię bezpieczeństwa, dlatego, że mod rewrite w BARDZO skuteczny sposób maskuje np. nazwy zmiennych. Każde złamanie reguły powoduje wywołanie strony błędu, zatem w naszym przykładzie, jeśli wpiszesz zamiast katalog1 - katalog_1 złamiesz regułę. Tym bardziej nie można wtedy kombinować z xss-ami. Nie można wpisać w adresie odpowiednika
    index.php?wpis="><script>alert('xss');</script>
    mod-rewrite odrzuci od razu takie wywołanie
    strona.com/"><script>alert('xss');</script>
    za samo <, dzięki czemu na zmienną par1 nie wyśle się próba wykrycia tego niegroźnego xss-a. Dobrze przemyślany mod-rewrite na prawdę wzmacnia bezpieczeństwo strony.

    Z tego co się orientuje w tym momencie nie ma lepszej metody na utrzymanie fajnego adresu strony. Dodatkowo mod-rewrite dobrze wpływa na indeksację przez przeglądarki.

    Sposób java-scriptowy z pop-upem z ukrytym adresem jest jakimś tam sposobem. Niestety głupi pop-up blocker na komputerze klienta, choćby ten wbudowany w IE6 wstrzyma otwarcie takiej strony, i tyle ktoś sobie pooglądał.

    Mam nadzieję, że napisałem to jasno i się przyda komuś

    Pozdrawiam
    M.S.
    Ostatnio edytowane przez [S.e.M.e.N] : 08-08-2006 - 15:14

  9. #9
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Cytat Napisał [S.e.M.e.N]
    Przykładowo normalne (bez włączonego i skonfigurowanego mod-rewrite) wywołanie adresu typu

    http://www.strona.com/katalog1/katalog2/

    powoduje sprawdzenie przez serwer czy rzeczywiście takie katalogi istnieją, a jeśli istnieją wyszukanie w katalog2 pliku strony głównej (tj. index.htm, index.html, index.php). Ewentualnie może się pokazać listing plików w tym katalogu.
    Mozna to tez uzyskac w inny sposob, ktory bardzo dobrze sie sprawdza i bez mod_rewrite i zmiana sciezki nie powoduje problemow... np http://www.strona.com/pub/news/it/attacks :-)

    Cokolwiek zmienisz (poza 'pub') bedzie zawsze dzialac :-) i nie ma mod_rewrite...

    Kod:
    httpd.conf:
    <Files pub>
      ForceType cgi-script
    </Files>
    Od tej pory 'pub' jest traktowane jako CGI a wtedy z REQUEST_URI bierze sie parametry :-) lamiac zawartosc wg /\// :-)
    W ten sposob bardzo dlugo bylo zrobione yahoo i wiele innych serwisow!

    Cytat Napisał [S.e.M.e.N]
    Co się zmienia przy mod-rewrite?
    Mod-rewrite włącza się i konfiguruje w .htaccess. Tam też wpisuje się wyrażenia regularne, które są niezbędne, aby jaki kolwiek adres został zamaskowany.
    Albo w sekcji VirtualHost albo gdziekolwiek indziej gdzie bedzie odpowieni scope... polecam http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html a szczegolnie 'Practical solutions' - sterta cholernie dobrych przykladow! Dla bardziej doswiadczonych mam 'mod_rewrite cheat sheet' - http://www.ilovejackdaniels.com/apac...e-cheat-sheet/ - u mnie wisi na scianie abym mial pod reka :-)

    Cytat Napisał [S.e.M.e.N]
    Jak widzisz dzięki mod-rewrite możemy sprawnie zaoszczędzić swoim gościom patrzenie na niemiłe dla oka szlaczki w adresie. Mod-rewrite jest na prawdę dobrą rzeczą, wymaga jedynie wyćwiczenia się trochę w tych wyrażeniach regularnych.
    To 'troche' to znaczne upraszczanie tematu... Pokazales jedynie samo RewriteRule... a co z RewriteCond i skladaniem wielu warunkow logicznych dla danej reguly przepisywania? To juz znacznie wyzsza szkola jazdy jak masz 10 lub wiecej warunkow dla kazdego RewriteRule :-)

    Cytat Napisał [S.e.M.e.N]
    Tak, rzeczywiście jest to pewnego rodzaju obciążenie dla serwera, choć w przypadku dobrych serwerów komercyjnych nie ma to dla nich żadnego znaczenia. Ramki męczą komputer klienta, to już lepiej pomęczyć serwer
    Obciazenie dodawane przez mod_rewrite jest znacznie mniejsze niz fizyczne wykonanie czegokolwiek na serwerze - np. polaczenie z baza danych, wyssanie zawartosci, wygenerowanie strony i odeslanie do klienta - szczegolnie jesli zapytanie sluzy wykonaniu ataku na aplikacje. Porownujac na przyklad czas i zasoby potrzebne do wygenerowanie stronki w Mambo (aktualnie znane juz jako Joomla - o wiele bezpieczniejsza od Mambo nawiasem mowiac) do czasu jaki mod_rewrite potrzebuje aby wyciac znane mu ataki, jest taki, ze gdyby generowanie strony bylo wypiciem kufla piwa, to analiza adresu przez mod_rewrite jest zlizaniem piany z kacika ust :-) Mniam

    Cytat Napisał [S.e.M.e.N]
    Dobrze przemyślany mod-rewrite na prawdę wzmacnia bezpieczeństwo strony.
    Atak na Mambo, ktory opisalem jakis czas temu - mialem z tym sporo zabawy i tysiace trafien dziennie... Regulka dziala prosto - jesli sa spelnione warunki ataku serwer odsyla '403 Access denied' zamiast strony a w logach nie ma smieci (chyba ze wlaczy sie logowanie). Opis ataku dostepny pod http://www.sq6tqm.info/content/view/59/1/

    Cytat Napisał [S.e.M.e.N]
    Mam nadzieję, że napisałem to jasno i się przyda komuś
    Fajny opisik - przybliza mozliwosci mod_rewrite dla tych co nie mieli z nim stycznosci... a mod_rewrite to potega - po prostu bestia jakich malo!

    Ja wlasnie walkuje zdrowo mod_security (moj serwer produkcyjny ma wiecej modulow niz moge zapamietac i wszystkie sa cholera uzywane w konkretnym celu... i teraz zapanowanie nad sterta kilkudziesieciu regulek mod_rewrite'a i masa innych dodatkow juz nie jest takie sobie proste).

    Pamietac jednak nalezy, ze w swoim zalozeniu mod_rewrite przepisuje adresy URL i na tym jego zadanie sie konczy, wiec jesli ktos uzywa formatu adresow jak w zapytaniach/formularzach GET to dziala doskonale... inaczej - sorry!
    Ostatnio edytowane przez TQM : 08-09-2006 - 00:13

  10. #10
    [S.e.M.e.N] jest offline Michał Semeniuk
    Zarejestrowany
    May 2006
    Skąd
    Wawa
    Postów
    53

    Domyślnie

    Tqm sięgnąłeś głębiej tematu, dzięki za to, choć jednak nie wydaje mi się, że człowiek, który zaczął ten temat będzie grzebał w configu apache-a

    Cytat Napisał tqm
    To 'troche' to znaczne upraszczanie tematu... Pokazales jedynie samo RewriteRule... a co z RewriteCond i skladaniem wielu warunkow logicznych dla danej reguly przepisywania? To juz znacznie wyzsza szkola jazdy jak masz 10 lub wiecej warunkow dla kazdego RewriteRule :-)
    Po co mam pisać o składaniu wielu warunków logicznych, skoro nie o to pytano w temacie Chodziło nam o proste metody ukrywania adresu w paskach, a tak na prawdę to o inne koncepcje niż ramki htmlowe. Opisałem w skrócie mod-rewrite i oparłem się na przykładzie dostępnym dla wszystkich. Jak trzeba coś więcej i tak zawsze najlepszą wiedzą jest oryginalna dokumentacja, którą Tqm podał powyżej.

    RewriteCond rzeczywiście bardzo rozszerza działalność mod-rewrite-a, jeśli ktoś by się na prawdę w to wciągnął to polecam taki kurs home.pl, który pozwala załapać wszystko od początku, aż po same RewriteCond-y.

    Teraz już wiecie na ten temat wszystko, myślę, że czas zamknąć wątek, chyba, że jeszcze jakieś wątpliwości, badź też inne metody ukrywania oryginalnego adresu.

    Pozdrawiam

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj