Portál AbcLinuxu, 24. dubna 2024 20:22


Dotaz: kdo (odkud) zavolal php script ?

26.1.2009 23:42 Jeason | skóre: 16 | Plzeň
kdo (odkud) zavolal php script ?
Přečteno: 705×
Odpovědět | Admin


mam http://domena.tld/aplikace.php
kde je nejaky vykonavany script a pomoci parameru mu predam udaje. abych ale osetril ze to pujde jen z povolenych URL


napr. http://nejakadomena.tld/registrace.php
kde to zavolam pomoci fopen("http://domena.tld/aplikace.php?a=b&c=d","r"); (asi je jedno zda readfile apod.)

tak z http://domena.tld/aplikace.php nepoznam odkud to bylo zavolane. a nemuzu za boha prijit jak tohle rozlousknout.
potrebuju proste zjistit odkud to bylo zavolane
 

ucelem je abych zjistil z jake url adresy byl volan kod uvedeny u registrace.php.

snazil sem se pouzivat beznej referer ale ten nefunguje.

znate nějáké řešení? (čistě php)

 za Vaše odpovědi a nápady na řešení děkuji.

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.1.2009 23:57 Mige_Amour | skóre: 12 | Benešov
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Referer obsahuje pouze adresu stránky, ze které bylo na script odkázáno. Vám by nejšpíš pomohlo $_SERVER["REMOTE_ADDR"].

27.1.2009 00:53 Jeason | skóre: 16 | Plzeň
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?

mi povi pouze IP adresu stroje ktery pristupoval k te adrese. nikoliv url ci jmeno domeny ze ktere to bylo.

27.1.2009 10:54 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?

To zjistit nelze. Když ti přijde TCP spojení, tak v něm je prostě jen informace o IP adrese a TCP portu. Adresu skriptu by sis tam musel předávat nějak sám, třeba v dalším parametru.

Maximálně bys mohl zkusit ident, ten by ti mohl prozradit, pod kterým uživatelem je ten připojující se skript spuštěn. Pokud je na tom stroji ident vůbec provozován.

27.1.2009 18:28 luky
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?
Spravna odpoved by byla, ze za timto ucelem se pouziva hlavicka referer, kterou php-fopen neposila a pro omezeni pristupu ani neni vhodna, protoze v ni kazdy muze poslat cokoliv. Jiste jste z te knihy pod stromeckem mel radost, ale v tuto chvili jsou Vase uvahy mimo misu :-)
27.1.2009 18:46 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?

Za tímto účelem se používá referer? Za jakým účelem? Referer se posílá, když na stránce A kliknu na odkaz na B, tak se pošle v požadavku, že jsem přišel z A. Jakou hlavičku poslat, když jsem PHP skript, nikde jsem nebyl a jen tak si chci něco odněkud stáhnout, to fakt netuším, ale referer k tomu rozhodně neslouží.

Když si stahuju něco wgetem nebo PHP skriptem ručně spuštěným v CLI, tak se v refereru podle vás posílá nebo má posílat jako co - můj login, nebo snad aktuální adresář? Je to stejný nesmysl.

Já si za svou odpovědí stojím a posílání nějakého misinterpretovaného refereru je součástí onoho "předávat nějak sám, třeba v dalším parametru".

28.1.2009 02:18 luky
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?
Za ucelem predani adresy dokumentu, ze ktereho se na dotazovany objekt pristupuje. Pokud zadny takovy neni, nebo klient tuto informaci z jakehokoli duvodu nepredava, tak se neda nic delat, protoze se to jinak zjistit neda. Navic je to hodnota z principu pouze informativni a neduveryhodna.

Viz vyse, v takovem pripade neni duvod referer posilat a neposila se (teda podle klienta, voleb).

Ano, ta cast je v poradku, ale dalsi se mi zdalo jako nesmyslne odbocovani. Dosly mi cigarety, tak popichuju :-)
27.1.2009 12:05 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
referer sa posiela v http hlavičke, tú fopen nenastaví. Skúste použiť curl. Btw, fopen na url je zlé, fuj a socdem :-)
27.1.2009 16:31 Jeason | skóre: 16 | Plzeň
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?

bud to hlavicku neposila nebo to taky delam spatne ....

AraxoN avatar 27.1.2009 17:50 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?

curl_setopt($ch, CURLOPT_REFERER, "http://www.example.com/");

27.1.2009 17:39 Zdenek
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hlavne je to jako zabezpeceni na nic. Referer lze podvrhnout levou zadni. Pouzijte bud tu IP adresu (povolen jen pristup z localhostu) nebo jeste lepe, skript umistete mimo document root a nacitejte ho pomoci include.
rADOn avatar 27.1.2009 17:59 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud jen chces aby byl skript pristupny pouze z nekolika povolenych hostu, da se to jednodusse zaridit v konfiguraci apache.

Pokud je za tim nejaka dalsi logika ktera se neobejde bez php, pak potrebujes $_SERVER["REMOTE_ADDR"] a pouzit si IP adresu. IP adresa je jedine na co je spoleh. Muzes sice zavolat nejakou variantu gethostbyaddr() (php to urcite umi, co treba $_SERVER["REMOTE_HOST"] ?) ale to je mene spolehlive a da se to zneuzit k DOS utoku (po dobu provadeni dns dotazu je fakticky zablokovane worker vlakno apace). Na oddelenem intranetu bych si to lajznul, na internetu nikdy.

V kazdem pripade znas jen hosta, tedy IP nebo nejakadomena.tld. URI volajiciho (/registrace.php) zjistis pouze pokud se bude milostive obtezovat vyplnit hlavicku Referer nebo to oznami jinak, treba pridanim nejakeho GET parametru.

"2^24 comments ought to be enough for anyone" -- CmdrTaco
27.1.2009 19:31 Jeason | skóre: 16 | Plzeň
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?

dostanu vzdy informace od scriptu ktery je vykonavany, nikoliv o scriptu ktery tento script volá (registrace.php).

v podstate pomoci $_SERVER se da zjisti jen uzitecna vec a to je IP adresa stroje ze ktereho jde ten pozadavek. nic vic.

rADOn avatar 27.1.2009 20:19 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?
Pomoci $_SERVER se da zjistit jen to, co zjistit lze. Zjistit URL volajiciho lze asitak stejne jako zjistit postovni adresu cloveka ktery vam vola telefonem. To co chcete zadnym primym zpusobem udelat nejde, da se leda vymyslet deset ruzne neprimych zpusobu.

Bez presnejsi specifikace o co se vlastne jde muzu poradit jen to co radim kazdemu novopecnemu php bastliri - nauc se zaklady TCP/IP, pak o trochu vic nez zaklady HTTP a pak muzes neco programovat. Do ty doby muzes jenom bastlit.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
27.1.2009 21:34 Jeason | skóre: 16 | Plzeň
Rozbalit Rozbalit vše Re: kdo (odkud) zavolal php script ?

oki, diky za tvuj nazor, ale je to uz o nicem... neresi to problematiku ale hafo kecu okolo....

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.