ugrás a tartalomhoz

Milyen url-ről érkezik a kérés?

Anonymous · 2005. Nov. 4. (P), 18.15
Sziasztok!

Bocs a téma címért, de csak ismerkedem a PHP-vel, így nem ismerem a pontos meghatározásokat. Ezért elmondani sem tudom érthetően a kérdésem, inkább egy gagyi példával próbálom szemléltetni:
Honlapokra generál képet a nálam futó feldolgoz.php. A honlapokon elhelyezett link a következő:

<a href="http://www.valami.hu"><img src="http://www.valami.hu/feldolgoz.php?url=http://www.akarmi.hu"></a>

Jelenjen meg a honlapon egy kép, benne az oldal url címe.
A valami.php-ben a $website = $_GET['url'];
megoldással megkapom a címet, ez eddig OK. De! Ha ez illető ezt a kódot teszem azt egy footer.php-be teszi be, és már nem a főoldalon van, akkor is a főoldalának címét fogja odairni, de nekem mindig az adott oldal neve kellene oda. Megoldható lenne több 'url' azonosító használatával minden egyes oldalhoz külön-külön, de ez nem túl elegáns, és kényelmes.
Szóval a kérdésem a következő: hogy oldható meg, hogy a link a következő legyen: http://www.valami.hu/feldolgoz.php és a feldolgoz.php-m a meghívásakor tudja, hogy honnan is érkezett a kérés?

Mivel kezdő vagyok, nem igazán tudom, mit is keressek pl. a PHP dokumentációban. Ha nem konkrét megoldást adnátok, az sem baj, csak irányítsatok legalább a megfelelő leíráshoz.

Bocs, ha nem voltam érthető és szakszerű!
Köszönettel: Sanyi
 
1

kép betöltő lap?

Hojtsy Gábor · 2005. Nov. 4. (P), 18.37
Ha jól értem, akkor arra gondolsz, hogy a PHP által előállított képet aszerint szeretnéd megcsinálni, hogy mi volt annak az oldalnak a címe, ahonnan a képet előállító PHP-t meghívta a böngésző automatikusan?
2

<Nincs cím>

Anonymous · 2005. Nov. 4. (P), 18.46
Hmmm... Igen. Tudni szeretném, hogy a valami.hu/1.html, vagy valami.hu/2.html-ről jött-e a kérés és ennek megfelelően írja a képre, hogy valami.hu/1.html, vagy valami.hu/2.html.

Kösz: Sanyi
3

referer

Hojtsy Gábor · 2005. Nov. 4. (P), 18.48
Hát sose próbáltam, hogy ilyenkor elküldi-e a böngésző a HTTP_REFERER értékét, de én a helyedben megpróbálnám, hogy a $_SERVER['HTTP_REFERER']-ben van-e a kért adat.
5

Elküldi

janoszen · 2005. Nov. 4. (P), 19.19
A böngésző elküldi HA nincs letilva a böngészőben és HA nincs letiltva a tűzfalban. Inkább javaslom, hogy a weblabor rövid webcímekről szóló cikkében ( http://www.weblabor.hu/cikkek/rovidwebcim ) ecsetelt technikával csinálj egy képkiszolgálót és úgy hivatkozz a képekre, hogy /kepgen/1/logo.jpg vagy /kepgen/2/logo.jpg. Tehát, hogy az útvonalban legyen az adat.

Egyébként nem javaslom, hogy azonos URL alól különböző képeket szolgálj ki, mert a böngésző becacheli és nem fog változni a kép.
4

session?

zsepi · 2005. Nov. 4. (P), 19.17
s ha linket így adnád meg:

<img src="http://www.valami.hu/feldolgoz.php?url=<?php echo $_SERVER['REQUEST_URI']; ?>">
6

XSS gond

Hojtsy Gábor · 2005. Nov. 4. (P), 19.21
Na azért ezzel óvatosan, mert a REQUEST_URI-t a "felhasználó" (böngésző legtöbbször) adja meg, legalábbis egy szép kis XSS lyukat nyitsz, ha ezt a kódod így használod.
8

user input

zsepi · 2005. Nov. 5. (Szo), 16.22
mint ahogy referrer értékér is a böngésző küldi

Természetesen minden user inputot ellenőrizni kell

Azért gondoltam erre a megoldásra, mert ezt a paramétert (request_uri) mindig elérhető a $_SESSION tömbben (ha jól tudom), míg a referrer pedig nem (pl. ha kikapcsolod)
9

nemegészen

Hojtsy Gábor · 2005. Nov. 5. (Szo), 22.22
Hát a $_SESSION tömbben csak az érhető el, ami beleraksz, de az biztosan. Én azt kifogásoltam, hogy te beleírod a HTML lapba a REQUEST_URI értékét, míg ha a referert vizsgálja, akkor azt nem kell sehova beleírni, hanem csak a képlétrehozó programban lekérni. Ez így nem nyit XSS lyukat. Ha nem is elérhető, szerintem nem egy olyan kritikus alkalmazásról volt szó, aminél ez nagy gond :)
13

pontosítás

zsepi · 2005. Nov. 7. (H), 10.37
bocs, nem $_SESSION-t, hanem $_SERVER-t akartam írni.

S azt továbbra is hangsúlyoznám, hogy a REFERRER-t is a kliens küldi, tehát azt is le kell ellenőrizni, ugyanúgy lehetséges lyuk.

Az meg, hogy nem egy olyan kritikus alkalmazás - hát, nem feltétlenül így közelítenék hozzá. A megrendelőnek természetesen kritikus lesz, még ha nem is függ tőle a világ sorsa - innentől pedig igenis nagy gond :)
14

az nem XSS

Hojtsy Gábor · 2005. Nov. 7. (H), 10.52
Azt írtam, hogy ha kiírjuk a REQUEST_URI-t az oldalra, akkor az XSS probléma, mert abban bármi lehet. De ha felhasználjuk a REFERERT, azaz nem írjuk ki, akkor az nem lehet XSS gond. XSS definíció szerint csak akkor lehet, amikor valamit kiírunk, amit a klienstől kaptunk.
7

<Nincs cím>

Anonymous · 2005. Nov. 4. (P), 20.00
Köszönöm a gyors válaszokat, a $_SERVER['HTTP_REFERER'] volt az első, amit kipróbáltam, és működik. Kösz, mégegyszer. Viszont az érdekes, hogy ezzel már ptóbálkoztam, akkor nem volt jó. Most elsőre működött... Talán most pihentebb voltam, mint a kód írásakor?

Köszönettel: Sanyi
10

Nem lesz jó

janoszen · 2005. Nov. 5. (Szo), 23.07
Mint láthattad a hozzászólásokban - többek között az én hozzászólásomban is - nem lesz jó neked a REFERER-es megoldás. Legalábbis akkor nem, ha jó kiszolgálást akarsz csinálni. Persze, ha megelégszel a közepes eredménnyel, jó lesz. Kicsit fentebb adtam egy jó megoldást is.
11

<Nincs cím>

Anonymous · 2005. Nov. 6. (V), 15.46
Üdv!
Ajjaj! Természetesen normális kiszolgálást szeretnék elérni, a fenti példa csak a (tudatlanságomból eredő) könnyebb érthetőség miatt ilyen egyszerű. Természetesen komolyabb célt szolgálna a művelet. természetesen olvastam azt is, amit Te javasoltál, de:
1-több oldalról teszteltem a dolgot, cache próblémával nem találkoztam /ettől előfordulhat,
2-az elsőnek kipróbált módszer jónak tűnik, s mivel nem vagyok még otthon a témában, így nem is érthetem, miért lenne rossz ez nekem, nem látom benne a buktatót,
3-egy-két hónapja próbálkoztam az url rövidítéssel, de az itteni leírások nekem túl komolyak voltak és csak az URL Rewrite módszer volt az, amit megértettem és használni tudtam, így a többi sajnos most is magas.

Tehát, ha még egy kis segítség belefér, hálás lennék érte!

Kösz: Sanyi
12

Még egy kis segítség

janoszen · 2005. Nov. 6. (V), 18.01
Na, nem csak a cache-el van baj, hanem az XSS támadásokkal is.

Szerintem, az URL rewrite a te módszered. Miután ide kissé hosszú lenne feltenni a kódot és pillanatnyilag nincs saját tárhelyem, e-mail-ben mutatok egy kódot a feldolgozásra, ha gondolod.

ProClub
proclub##kukac##karinthy.hu