URL preusmerenje

С Википедије, слободне енциклопедије

URL preusmerenje, takođe nazvano URL forvardovanje, je World Wide Web tehnika za izradu veb stranice dostupne sa više od jedne URL adrese. Kada veb pretraživač pokušava da otvori URL koji je preusmeren, stranica sa drugacijom URL adresom je otvorena. Slično tako, domen redirekcija ili domen forvardovanje je kada su sve stranice iz jednog URL domen-a preusmerene na drugi domen, kao kada wikipedia.com i wikipedia.net su automatski preusmerene na wikipedia.org. URL redirekcija se može koristiti za skraćivanje URL-a, kako bi se sprečili pokidani linkovi kada su veb stranice premeštene, kako bi se omogućilo da više domena koji pripadaju jednom vlasniku pokazuju na jedan veb sajt, da upravlja navigacijom unutar i van sajta, za zaštitu privatnosti, i za manje štetne namere kao što su phishing napadi.

Svrhe[уреди | уреди извор]

Postoji nekoliko razloga za korišćenje URL preusmerenja :

Slična domen imena[уреди | уреди извор]

Korisnik može pogrešno da otkuca URL, na primer, "example.com" i "exmaple.com". Organizacije često registruju te "lose napisane" domene i redirektuju ih na pravu lokaciju: example.com. Adrese example.com i example.net mogu obe da se preusmere na jedan domen ili veb stranicu, kao što je example.org. Ova tehnika se pretežno koristi za "rezervisanje" drugih top-level domena (TLD) sa istim imenom, ili olakša da pravi ".edu" ili ".net" bude preusmeren na poznatiji ".com" domen.

Premeštanje stranica na nov domen[уреди | уреди извор]

Vem stranica može biti preusmerena na novi domen iz tri razloga:

  • sajt može imati želju, odnosno potrebu, da promeni ime domena;
  • autor može premestiti njegovu odnosno njenu stranicu na nov domen;
  • dve veb stranice se mogu spojiti.

Sa URL preusmerenjima, linkovi koji dolaze na zastareli URL mogu biti poslati na pravu lokaciju. Ti linkovi mogu biti sa drugih sajtova koji ne znaju da je došlo do promene od strane dela pregledača u kom korisnici čuvaju bukmarkovane/omiljene stranice.

Isto važi i za pretraživače. Oni često imaju starija/zastarela domen imena i linkove u svojim bazama i poslaće pretrage korisnika ka tim starim URL-ovima. Korišćenjem "trajnog premeštanja" preusmerenje na nov URL, posetioci će ipak doći do prave stranice. Takođe, u sledećem slanju zahteva, pretraživač bi trebalo da detektuje i koristi nov URL.

Beleženje odlaznih linkova[уреди | уреди извор]

Pristupne log informacije većine veb servera čuvaju detaljne informacije o tome odakle su posetioci i kako su pregledali hostovan sajt. Oni, međutim, ne sadrže koje su linkove posetioci napustili. Ovo je tako zato što pregledači posetilaca nemaju potrebu da komuniciraju sa originalnim serverom kada korisnik klikne na odlazni link.

Ova informacija može biti dobijena na nekoliko načina. Jedan način uključuje URL preusmerenje. Umesto slanja posetioca na drugi sajt, linkovi na sajtu mogu ga usmeriti na URL koji je na originalnom vebsajt domenu, koji ga automatski preusmerava na pravi sajt. Mane ove tehnike je kašnjenje izazvano dodatnim slanjem zahteva veb serveru. Kako će ovaj dodatni zahtev ostaviti trag na serveru, otkriće tačno koji je link praćen, to takođe može biti kršenje prava privatnosti.[1]

Ista tehnika se iskoristila od strane nekih korporativnih veb sajtova za implementaciju obračuna čiji se sledeći sadržaj nalazi na drugom sajtu, i stoga nije nužno povezan sa korporacijom. U takvim slučajevima, izbacivanje upozorenja izasiva dodano kačnjenje.

Kratki pseudonimi za duge URL-ove[уреди | уреди извор]

Veb aplikacije često imaju opširnije opisne atribute u svojim URL-ovima koji predstavljaju hijerarhijske podatke, strukture komandi, putanje transakcije i informacije o sesiji. Ovakva praksa rezultuje resavanju problema URL-ova koji su nepregledni i te[ki za pamćenje i koji se ne uklapaju u ograničenja микроблогинг sajtova. URL skraćivanje servisi nude rešenje za ovaj problem preusmerenjem korisnika na veću URL ardesu sa manje.

Smisleni, trajni pseudonimi za duge ili promenljive URL-ove[уреди | уреди извор]

Ponekad se URL adresa stranice menja iako sadržaj ostaje isti. Zato URL preusmerenje može pomoći korisnicima koji imaju bukmarkovane stranice. Ovo se rutinski odradi na Vikipediji kada god je stranica preimenovana.

Post/Redirect/Get[уреди | уреди извор]

Post/Redirect/Get (PRG) spada u veb razvoj dizajnerski patent koji sprečava slanje duplih rezultata form-e, kreirajući mnogo intuitivniji interfejs za korisnike korisnički agent (korisnici).

Manipulisanje pretraživača[уреди | уреди извор]

Tehnike preusmeravanja se koriste da prevare pretraživače. Na primer, jedna strana može da pokaže popularne termine za pretraživanje pretraživaču, ali da preumseri korisnike na drugu stranicu. Postoje takođe slučajevi gde su preumaravanja bila korišćena da "kradu" status popularne stranice i da je iskoriste za neku drugu. Takođe će vas preusmeriti koristeći pretrage pretraživača kao pretragu, najčešće uključujuči 302 HTTP status code - "moved temporarily (trajno premešteno). ". Vlasnici pretraživača su primetili problem i rade na odgovarajućim akcijama. Danas, kao rezultat, takve manipulacije obično rezultiraju razotrkrivanju tog sajta.

Manipulasanje posetioca[уреди | уреди извор]

URL preusmeravanje je nešto što se koristi kao deo phishing napada koji zbune posetioce u pogledu toga koji sajt posećuju. Pošto moderni pretraživači uvek pokažu pravu URL adresu koju posećujemo, ova opasnost je smanjena. Međutim preusmeravanja često mogu odvesti do drugih sajtova, koji će pokušati da napadnu na drugačiji način. Na primer, preusmerenje može odvesti korisnika na sajt, koji će ga prevariti na skidanje antivirusnog softvera, i tako će, ironično, instalirati trojan virus neke vrste umesto toga.

Otklanjanje referer informacija[уреди | уреди извор]

Kada se klikne na link, browser usput pošalje I HTTP request polje zvano referer (ukazivač) koje pokazuje na izvor linka. Ovo polje se sastoji od URL-a trenutne stranice, i završiće u beleškama server koji opslužuje spoljašnji link. Budući da osetljive strane mogu sadržati osetljive URL-ove (na primer, http://company.com/plans-for-the-next-release-of-our-product), nije poželjno da se refereru URLa ostavi organizacija. Strana za preusmeravanja koja izvodi sakrivanje referera može biti ugrađena sve eksterne URL-ove, koji na primer transformišu http://externalsite.com/page u http://redirect.company.com/http://externalsite.com/page. Ova tehnika takođe eliminiše ostale potencijalno osetljive informacija od URL referera(ukazivača), kao što je session ID, i može smanjiti šansu phishing-a pokazujući krajnjem korisniku da je prešao na drugi sajt.

Tehnike[уреди | уреди извор]

Nekoliko drugih odziva brauzer-u može rezultirati preusmerenjem . Oni variraju po pitanju da li utiču na HTTP headers ili HTML sadržaje. Tehnike najčešće variraju u zavisnosti od uloge osobe koja ih implementira i njegovog pristupa različitim delovima sistema. Na primer, web autor bez kontrole nad hederima može da iskoristi Refresh meta tag pošto će web administrator koji vrši preusmeravanja najverovarnije koristiti samu konfiguraciju servera.

Ručno preusmeravanje[уреди | уреди извор]

Najlakša tehnika je pitati posetioca da prati link dat na stranici, najčešće koristeći HTML sidro kao:

Please follow <a href="http://www.example.com/">this link</a>.

Ova metoda se najčešće koristi kao dodatna — ako brauzer ne podržava automatska preusmeravanja, posetioc može opet stići do ciljnog dokumenta prateći link.

HTTP status šifre: 3xx[уреди | уреди извор]

U HTTP protokolima korišćenim od strane World Wide Web, preusmerenje je odgovor sašifrom statusa koji počinje sa 3 koja uzrokuje da brauzer prikaže drugu stranicu. Različite šifre predstavljaju različite razloge preusmeravanja, koji omogućavaju određene akcije u skladu sa njima (kao na primer kod menjanja linkova u 301, što uzrokuje trajnom promenom adrese ).

HTTP/1.1 definiše several status codes(nekoliko statusnih šifara) za preusmerenja:

Sve ove šifre statusa očekuju da će URL mete preusmerenja biti dat na lokaciji: heder HTTP odgovora. 300 ”višestruki izbori” će obično izlistati sve izbore u telu poruke i pokazati automatski izbor na lokaciji:heder .

(Šifre statusa 304 not modified i 305 use proxy nisu preusmerenja).

HTTP odgovor sa 301 "trajno premešteno" preusmerenje izgleda ovako:
HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/
Content-Type: text/html
Content-Length: 174

<html>
<head>
<title>Moved</title>
</head>
<body>
<h1>Moved</h1>
<p>This page has moved to <a href="http://www.example.org/">http://www.example.org/</a>.</p>
</body>
</html>

Korišćenje serverskog upisa za preusmerenja[уреди | уреди извор]

Web autori koji proizvode HTML sadržaje najčešće ne mogu napraviti preusmerenja koristeći HTTP hedere, jer su oni automatski garantovani od strane programa web servera kada opslužuje HTML fajl. To najčešće važi i za programere koji pišu CGI skripte, iako neki server dozvoljavaju skriptama da dodaju ručne hedere. Mnogi web server če generisati 3xx šifru statusa ako skripta izbaci "Lokacija:" liniju hedera. Na primer, u PHP-u, neko može koristiti funkciju hedera:

header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.com/');
exit();

Programer se mora osigurati da hederi budu izbačeni pre tela . Ovo možda neće lako stajati sa prirodnim tokom kontrola kroz kod. Da bi pomogli sa ovim, neki serveri mogu staviti podatke iz tela pod baffer. U ASP scripting jeziku, ovo takođe može biti postignuto korišćenjem response.buffer=true i response.redirect "http://www.example.com/"

HTTP/1.1 omogućava ili relativne,ili apsolutne URL reference. Ako je referenca URL-a relativna klijent dodeli traženu apsolutnu URI referencu u skladu sa definisanim pravilima: the rules defined in RFC 3986.

Apač mod_rewrite[уреди | уреди извор]

Аpač (server) mod_alias ekstenzija može biti upotrebljena za preusmeravanje određenih zahteva. Tipična konfiguracija direktive izgleda ovako:

Redirect permanent /oldpage.html http://www.example.com/newpage.html
Redirect 301 /oldpage.html http://www.example.com/newpage.html

Za fleksibilnije URL preusmeravanje i preradu Apačev mod_rewrite može biti korišćen. Na primer, za preusmeravanje zahteva u kanoničko područje imena:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.:]+\.)*oldsite\.example\.com\.?(:[0-9]*)?$ [NC]
RewriteRule ^(.*)$ http://newsite.example.net/$1 [R=301,L]

Takva konfiguracija se može primeniti na jednu ili sve lokacije na serveru kroz serverske konfiguracijske fajlove ili prema jednom direktorijumu koji sadrži .htaccess fajl.

nginx prerada[уреди | уреди извор]

Nginx sadrži integrisan http modul za preradu, koji se može koristiti za izvršavanje naprednih URL obrada, pa čak i generisanje web-stranica (sa return direktivom). Primer koji je prikazan je o tako naprednom modulu za preradu mdoc.su, koji implementira determinističke URL usluge skraćivanja, u potpunosti pomoću nginx konfiguracijskog jezika.

Na primer, ako se zahtev za /DragonFlyBSD/HAMMER.5 javi, prvenstveno bi bio preusmeren na /d/HAMMER.5 sa prvom ispod direktivom za preradu (samo bi uticala na unutrašnje stanje, bez ikakvih HTTP odgovora još uvek izdatih klijentu), a zatim će sa drugom direktivom za preradu, HTTP odgovor sa statusom 302 Pronađen biti izdat klijentu da zaista preusmeri na spoljni cgi skript od web-man-a.

	location /DragonFly {
		rewrite	^/DragonFly(BSD)?([,/].*)?$	/d$2	last;
	}
	location /d {
		set	$db	"http://leaf.dragonflybsd.org/cgi/web-man?command=";
		set	$ds	"&section=";
		rewrite	^/./([^/]+)\.([1-9])$		$db$1$ds$2	redirect;
	}

Osvežavanje Meta tag-a i HTTP zaglavlja[уреди | уреди извор]

Netskejp je predstavio meta osvežavanje koje osveži stranicu posle određenog vremena. Ima mogućnost specifikovanja novog URL-a za zamenu jednu stranicu drugom. Podržano je većine internet pregledača. Pogledaj:

Prekidom od nula sekundi sledi preusmeravanje što je pre moguće. Ovo je tretirano kao 301 trajna preusmeravanje od Gugla, dopuštajući transfer PageRank-a ka ciljanoj stranici.

Sledi primer jednostavnog HTML dokumenta koji koristi ovu tehniku:

<html>
<head>
<meta http-equiv="Refresh" content="0; url=http://www.example.com/" />
</head>
<body>
<p>Please follow <a href="http://www.example.com/">this link</a>.</p>
</body>
</html>

Ova tehnika može biti korišćena od strane veb-dizajnera, jer je meta tag sadržan unutar dokumenta. Meta tag se mora napisati unutar “head” sekcije HTML dokumenta. U primeru, broj “0” se može zameniti nekim drugim brojem, a taj novi broj će označavati odlaganje za toliko sekundi. Sidro u “body” sekciji je za korisnike čiji internet pregledači nemaju podršku za ovo svojstvo.

Isti efekat se može postići sa HTTP refresh zaglavlja:

HTTP/1.1 200 ok
Refresh: 0; url=http://www.example.com/
Content-type: text/html
Content-length: 78

Please follow <a href="http://www.example.com/">this link</a>.

Ovaj način je jednostavniji za generisanje od strane CGI programa, zato što ne moraju da menjaju uobičajenu statusnu šifru. Sledeći primer je CGI program koji utiče na preusmeravanje:

#!/usr/bin/perl
print "Refresh: 0; url=http://www.example.com/\r\n";
print "Content-type: text/html\r\n";
print "\r\n";
print "Please follow <a href=\"http://www.example.com/\">this link</a>!"

WWW Konzorcijum obesrabruje upotrebu meta osvežavanja, jer ne daje nikakve informacije pregledaču (ili pretraživaču) bilo o originalu ili o novom izvoru. WWW Konzorcijumov Web Content Accessibility Guidelines (7.4) obeshrabruje kreiranje stranica koje se automatski osvežavaju, jer internet pregledači ne dopuštaju da korisnik isključi ili kontroliše učestalost osvežavanja. Neki artikli na engleskom napisani o tom pitanju uključuju W3C Web Content Accessibility Guidelines (1.0): Ensure user control of time-sensitive content changes, Use standard redirects: don't break the back button! i Core Techniques for Web Content Accessibility Guidelines 1.0 section 7.

JavaScript preusmeravanje[уреди | уреди извор]

Javaskript može obaviti preusmeravanje menjajući window.location atribut :

window.location='http://www.example.com/'

Normalno, Javaskript stavlja URL preusmerenog sajta u istorijat pregledanja. Može stvoriti petlje kada korisnik pritisne dugme za nazad. Sledećom naredbom je moguće sprečiti ovu vrstu ponašanja

window.location.replace('http://www.example.com/')

Međutim, HTTP zaglavlja ili meta tag za osvežavanje mogu biti poželjni iz bezbedosnih razloga i zato što Javaskript neće biti izvršen od strane nekih pretraživača i mnogih veb indeksera.

Frame preusmeravanje[уреди | уреди извор]

Malo drugačiji efekat se može postići kreiranjem jednog HTML frejma koji sadrži ciljanu stranicu:

<frameset rows="100%">
  <frame src="http://www.example.com/">
  <noframes>
    <body>Please follow <a href="http://www.example.com/">link</a>.</body>
  </noframes>
</frameset>

Glavna razlika u odnosu na pređašnje metode, za frejm preusmeravanje, je to što pregledač prikazuje URL frejm dokumenta, a ne URL ciljane stranice, u ULR panelu.

Ovo tehnika “skrivanja” se može koristiti tako da korisnik vidi URL koji je lako upamtiti, ili prepoznati stranicu koji koristi tehniku pecanja, od strane stranice koja “veb spufuje”.

Isti efekat se može postiči sa “inline” frejmom:

<iframe height="100%" width="100%" src="http://www.example.com/">
Please follow <a href="http://www.example.com/">link</a>.
</iframe>

Preusmeravanje mreža[уреди | уреди извор]

Jedno preusmeravanje može dovesti do drugog. Na primer, the URL https://web.archive.org/web/20151105164832/http://wikipedia/.com/wiki/URL_redirection (obratite pažnju na domen) se prvo preusmerava na https://web.archive.org/web/20151105164832/http://wikipedia/.org/wiki/URL redirection a zatim na odgovarajući URL: http://en.wikipedia.org/wiki/URL_redirection. Ovo je neizbežno ako se različiti linkovi služe različitim serverima, iako bi trebalo biti smanjeno na minimun što većom brojem "prepisivanja" URL-a na serveru pre nego što ga vrati pretraživaču kao preusmeren.

Preusmeravanje petlje[уреди | уреди извор]

Po nekad može doći do greške tako što stranica umesto da završi preusmeravanje, vratiće ga sebi preko drugih stranica, što dovodi do beskrajnog niza preusmeravanja. Pretraživač bi trebalo da zaustavi preusmeravanje posle određenog broja skokova id a prikaže poruku o grešci.

HTTP/1.1 states:

Korisnik “TREBA” da otkriva i reaguje u cikličnom preusmeravanju (tj. “beskonacnom” preusmeravanjeu petlji).

Napomena: Ranija verzija ove specifikacije preporučuje maksimalno pet preusmeravanja([RFC2068], Section 10.3). Zadovoljni programeri moraju biti svesni da neki korisnici mogu zahtevati neka fiksna ograničenja.

Imajte na umu da se URL adrese možda neće ponavljati. Na primer: http://www.example.com/1[мртва веза] -> http://www.example.com/2 Архивирано 2012-07-30 на сајту Archive.today -> http://www.example.com/3 Архивирано 2013-04-09 на сајту Archive.today ...

Usluge[уреди | уреди извор]

Postoje službe koje mogu da obave URL preusmeravanje na zahtev, bez potrebe za tehničkim pristupom na server gde je hostovan vaš sajt.

Usluge URL preusmeravanja[уреди | уреди извор]

„Usluga preusmeravanja“ je sistem upravljanja informacijama, koja omogućava internet vezu koja preusmerava korisnike na željeni sadržaj. Najčešći način za korisnika je da koristi značajno ime domena i smanjenje dužine URL ili internet adrese. Preusmeravanje veza može se koristiti kao stalna adresa za korisnike koji često menjaju „domaćine“ (host), slično Domain Name System.

Hiperlinkovi koji uključuju URL preusmeravanje usluga se često koriste u spam porukama usmerenim na blogove i wiki. Jedan od načina da se smanji spam je da se odbace sve izmene i komentari koji sadrže hiperlinkove ka poznatim URL servisima za preusmeravanje; bilo kako bilo, ovo će takođe ukloniti legitimne izmene i komentare i ne može biti efikasan metod za smanjenje spamova.

Nedavno, URL usluga preusmeravanja koristi AJAX kao efikasan, koristan metod za korisnike za pravljenje smanjene URL adrese.

Glavni nedostatak nekih URL usluga preusmeravanja je upotreba stranica koje kasne, ili okvira zasnovanih na oglašavanju , da generiše prihode.

Istorija[уреди | уреди извор]

Prve usluge preusmeravanja je iskoristio najviši internet domen (TLD) kao što su ".to" (Tonga), ".at" (Austria) i ".is" (Iceland). Njihov cilj je bio da naprave značajne adrese. Prva matica za preusmeravanje usluga je V3.com koji se mogao pohvaliti sa 4 miliona korisnika na svom vrhuncu 2000. godine. V3.com je postigao takav uspeh zahvaljujući širokom spektru značajnih domena, uključujući "r.im", "go.to", "i.am", "come.to" and "start.at". V3.com je kupila FortuneCity.com, velika kompanija za besplatan internet hosting., početkom 1990, ref>„Net gains for tiny Pacific nation”. BBC News. 14. 9. 2007. Архивирано из оригинала 12. 05. 2014. г. Приступљено 27. 5. 2010. </ref> Prodajna cena najviših internet domena (TLD) počela je da opada sa 70,00$ dolara za godinu dana na manje od 10,00$, upotreba preusmeravanja usluga je opala.

Sa lansiranjem TinyURL 2002. rodjena je nova vrsta usluga preusmeravanja, odnosno URL shortening. Njihov cilj je bio da naprave duge URL adrese kratkim, da bi mogli da ih postave na internet forume. Od 2006., sa granicom od 140 karaktera na ekstremno popularnom Twitter servisu, ove kratke URL usluge se inteyivno koriste.

String maskiranje[уреди | уреди извор]

Usluge preusmeravanja mogu sakriti referrer postavljanjem srednje strane između strane na kojoj je veza i njegoog odredišta. Iako su konceptualno slični ostalim URL uslugama preusmeravanja, služe u druge svrhe, i retko pokusavaju da skrate ili pomute odredišnu URL adresu (njihov jedini sporedni efekat je da sakrijeove informacije i da omogući jasano povezeivanje između ostalih sajtova).

Ovaj tip preusmeravanja se često koristi kako bi se sprečile potencijalno štetne veze dobijene informacijama, na primer session ID u string upita. Mnogi veliki sajtovi za komunikaciju koriste vezu za preusmeravanje ka spoljnim vezama da bi smanjila šanse za krađu informacija o nalozima, kao i to kada korisnik napušta servis, da bi se smanjila mogućnost krađe naloga phishing.

Ovo je najprostiji primer takvog servisa, napisan u PHP.

<?php
$url = htmlspecialchars($_GET['url']);
header( 'Refresh: 0; url=http://'.$url );
?>
<!-- Fallback using meta refresh. -->
<html>
 <head>
  <title>Redirecting...</title>
  <meta http-equiv="refresh" content="0;url=http://<?php echo $url; ?>">
 </head>
 <body>
 Attempting to redirect to <a href="http://<?php echo $url; ?>">http://<?php echo $url; ?></a>.
 </body>
</html>

Prethodni primer ne proverava ko je pozvao (npr. Ponuđivač, iako bi to mogao biti lažni nalog). Takođe, ne proverava ni URL. To znači da se zlonamerna osoba može povezati na stranicu za preusmeravanje koristeći URL parametar koristeci njegove/njene selekcije, sa bilo koje stranice, koja koristi resurse veb servera.

Sigurnosna pitanja[уреди | уреди извор]

URL preusmeravanje može biti zloupotrebljeno od strane napadača za Phishing napade, kao što su Open Redirect i Covert Redirect.

"Otvoreno preusmeravanje je aplikacija koja uzima parametar i preusmerava korisnika na vrednost parametara bez ikakve provere."[2]

"Covert Redirect je aplikacija koja uzimaparametar i preusmerava korisnika na brednosti parametara bez dovoljno validacije ."[3] It is disclosed in May 2014 by a mathematical doctoral student Wang Jing from Nanyang Technological University, Singapore.[4]

Vidi još[уреди | уреди извор]

Reference[уреди | уреди извор]

  1. ^ „Google revives redirect snoopery”. blog.anta.net. 29. 1. 2009. ISSN 1797-1993. Архивирано из оригинала 17. 8. 2011. г. 
  2. ^ „Open Redirect”. OWASP. 16. 3. 2014. Архивирано из оригинала 07. 12. 2014. г. Приступљено 21. 12. 2014. 
  3. ^ „Covert Redirect”. Tetraph. 1. 5. 2014. Приступљено 21. 12. 2014. 
  4. ^ „Serious security flaw in OAuth, OpenID discovered”. CNET. 2. 5. 2014. Приступљено 21. 12. 2014. 

Spoljašnje veze[уреди | уреди извор]