[ nezki @ 29.01.2010. 12:43 ] @
Imam jednu aspx stranu (https://www.aspserver.com/default.aspx) na jednom serveru, i u toj strani imam IRAME u kom je ucitana druga strana sa drugog servera(https://www.phpserver.com/index.php).
Ono sto zelim je da na strani index.php nekako postavim uslov da se ta strana ucita tj da se prikaze sadrzaj strane jedino ako se ona ucitava u tom iframe, tj jedino ako je pozvana iz tog iframe, kome je parent ova stranica https://www.aspserver.com/default.aspx, a u SVIM ostalim slucajevima da se stranica ne ucita tj da se prikaze prazna stranica.
Da li nekako mogu uz pomoc neke $_SERVER varijable da kazem da na ovoj stanici index.php prikaze se sadrzaj samo u slucaju da se ona ucitava preko ovog ASP servera?
Treba uzeti u obzir i sve moguce situacije da se uz pomoc nekog proksija odglumi adresa ASP servera. Znaci stranica mora biti maksimalno zasticena da joj se ne moze nikako drugacije pristupiti sem iz ovog iframe i sa ove asp stranice. Znaci ne moze i direktnim unosom adrese https://www.phpserver.com/index.php u web pretrazivac .
[ vatri @ 29.01.2010. 13:59 ] @
pogledaj malo ovde http://php.net/manual/en/reserved.variables.server.php

Znaci vidis na kojoj si sad adresi i ispitas ako je ta adresa ista sa https://www.phpserver.com/index.php -> onda die("Error") ili sta vec :)

Samo ne znam oce li to raditi s obzirom da je u nekom Frame-u ucitana koliko sam ja razumio.
[ Nikola Poša @ 29.01.2010. 15:00 ] @
Ne bih rekao da je to rešenje. On bi trebao nekako da proveri da li je ta neka PHP stranica učitana u iframe-u ili nije, i u zavisnosti od toga da "reaguje". A kako je u PHP-u nemoguće proveriti da li je skript učitan u iframe-u, jedino rešenje bi bilo nešto preko JS-a. Možda ovako nešto:
Code:
<script type="text/javascript">
if (window.top == window.self) { //Što znači da nije otvoren nikakav iframe.
   window.location = 'http://www.google.com'; //Redirektuj ga na neku drugu stranicu.
}
</script>

Ne znam dal' bi ovo prošlo... A i druga stvar, ako taj neko isključi JS u svom browser-u, ništa od ove provere...
[ Nikola Poša @ 29.01.2010. 15:21 ] @
btw Sad mi pade napamet još jedno bolje rešenje... Ako imaš kontrolu nad tim PHP skriptom kojeg učitavaš u iFrame (ako nemaš onda nemoj da čitaš dalje ), mogao bi pri učitavanju PHP stranice u taj iFrame, da pošalješ i dodatan parametar GET-om na tu istu stranicu. Mogao bi npr. da enkriptuješ korisnikovu IP adresu + datum/vreme + možda neki hardcode-ovan salt, i da onda u tom tvom PHP skriptu proveriš da li se ti podaci poklapaju (ip adresa, datum/vreme i taj neki tajni kod). To bi izgledalo ovako nekako:
Code:
<iframe src="https://www.phpserver.com/index.php?key=nEki_enkRIptOVAn_sTrinG" />

Drugo, možda jednostavnije rešenje bi bilo da enkriptuješ samo trenutno vreme (time()), i da njega prosleđuješ kao taj tajni parametar. Onda bi samo proveravao da li taj string odgovara npr. sha1(time()). Ali onda opet neko može da provali šta kriptuješ...

Ne znam koliki tebi uopšte treba nivo bezbednosti u celoj ovoj priči? Od koga planiraš da "štitiš" taj PHP skript?
[ vatri @ 29.01.2010. 15:26 ] @
Aaaa, moja greska - kontao sam da je IRAME neki objekat ili sta vec u ASP-u, a izgleda da je to greska u kucanju :)

Onda je rjesenje da ispitas $_SERVER['HTTP_REFERER'] jer ce on da ti ispise stranicu na kojoj se nalazi iFrame (ovo nije 100% zastita, da se hakovat lako :) )
[ nezki @ 29.01.2010. 17:26 ] @
Da i ja sam to resio preko $_SERVER['HTTP_REFERER'] , ali onda sam nasao dosta materijal ana netu koji opisuje kako se jednostavno moze razbiti ovaj nacin.
Zato mi treba neko resenje koje je 100% sigurno
Malo samo da pojasnim stvari

Meni treba da se stranici iz iframe-a ne moze pristupiti direktno, i da ako je strana postavljena u neki iframe onda da taj iframe je iframe na stranici https://www.aspserver.com/default.aspx.
I da 100% bude sigurno
[ Jbyn4e @ 29.01.2010. 18:31 ] @
Ja bih koristio $_SERVER['REMOTE_ADDR'] u konkretnom slucaju - ako je ova promenljiva istovetna sa IP-jem tog aspserver-a, moze da se prikaze, ako nije - onda ne moze. Tesko da ce ovo neko da fake-uje.
Jos u kombinaciji sa refererom, mislim da nema sanse da omane.
[ Jbyn4e @ 01.02.2010. 22:22 ] @
I jesi resio sta?
[ nezki @ 02.02.2010. 10:55 ] @
Nisam jos mnogo je zeznuta situacija kod mene.
Evo o cemu se radi.

Sajt u php-u koji sam radio ima "unutrasnju" i "spoljasnju" adresu Prva je za one koji pristupaju iz mreze(u to su uracunati i VPN-ovi), a druga za one koji pristupaju van mreze.
Ono sto meni treba je kada neko se uloguje na ovaj sajt na asp serveru nebitno da li je u mrezi ili nije u mrezi da ima pristup ovom mom PHP sajtu, tj da mu je ucitan u tom iframe-u. To i jeste ono sto treba da napravim, zaci posto na ovom asp sajtu ima login strana, i samo kada se neko uloguje on ce videti ucitanu stranicu tog mog PHP sajta.
A svi ostali slucajevi treba da budu blokirani. A to su ustvari slucajevi kada neko direktno ukuca adresu iz iframe u pretrazivac i pokusa da pristupi ili iz mreze ili van mreze.

E sada kada sam ja stavio da mi ispise $_SERVER['REMOTE_ADDR'] i $_SERVER['HTTP_REFERER'] u svim ovim slucajevima desilo se da se neki slucajevi poklapaju. Evo koje su to situacije.

Kada se logjem iz mreze
1. Kada sam u mrezi i ulogujem se na ovaj asp sajt i u iframe-u ispise mi za $_SERVER['REMOTE_ADDR'] 90.30.90.17, a $_SERVER['HTTP_REFERER'] je prazan
2. Kada pristupan iz mreze i direktno ukucam "unutrasnju adresu" sajta i pristupim joj ispise mi iste podatke kao u prvom slucaju
3. Kada sam u mrezi i pristupim sa "spoljasnje adrese" direktnim kucanjem ispise mi sledece podatke $_SERVER['REMOTE_ADDR'] 198.196.7.41, a $_SERVER['HTTP_REFERER'] je prazan


E sada kada nisam u mrezi adrese u istim slucajevima su sledece
1. sada nisam u mrezi i ulogujem se na ovaj asp sajt i u iframe-u ispise mi za $_SERVER['REMOTE_ADDR'] 98.219.241.39, a $_SERVER['HTTP_REFERER'] je prazan
2. Ne moze da se pristupi
3. Sada nisam u mrezi i pristupim sa "spoljasnje adrese" direktnim kucanjem ispise mi iste podatke $_SERVER['REMOTE_ADDR'] 98.219.241.39, a $_SERVER['HTTP_REFERER'] je prazan

Znaci na Apache-u na PHP serveru imaju virtuelni hostovi za one koji pristupaju iz mreze i one koji pristupaju van mreze. Moj zadatak je da napravim da se preko ovog asp sajta kada se neko uloguje ne bitno da li je u mrezi ili van nje u iframe-u ucita moja PHP stranica.
A kada neko pokusa da direktno pristupi toj PHP stranici ili na neki drugi nacin da pristupi, da to bude onemoguceno.

Znam, komplikovana situacija skroz :-)
[ vatri @ 02.02.2010. 12:36 ] @
Sad sam malo umoran pa cu mozda lupnut neku glupost, ali nadam se da cu bar malo pomoci :)

Mozda bi mogao u toj PHP strani da napravis provjeru url-a. Znaci ne da se ne moze ucitavat kao "strana.php" nego recimo "strana.php?user=some_user&key=6asdas6das68dasdsada". Onda bi u ASP stranici morao da generises taj iFrame u zavisnosti od korisnika. key bi se mogao nalaziti u bazi i prilikom svakog logovanja korisnika da se mjenja. U ovom slucaju morao bi imati dostup do baze i kroz PHP i kroz ASP sajt. Ako ne tako onda nekako neki fajl generises ili tako nesto....
[ nezki @ 03.02.2010. 13:07 ] @
Na toj asp strani ja ne mogu nista da menjam, ja mogu samo da putanju u src u iframe postavim da bude ona koju ja kazem.
Inace putanja u iframe za src https://www.phpserver.com/index.php
E sada ja sam imao neku ideju da kao sto si ti napisao stavim u url parametar key koji bi bio neki kriptovani broj i vreme, a onda na strani bih to uporedjivao.
Ali opet ne znam kako bih time zastitio da ne moe direktno da se pristupi strani.
[ ksrele @ 03.02.2010. 13:35 ] @
Pa mozes na 1000 nacina.
Recimo, kriptujes sa nekom tvojom kript metodom, ili jos bolje napravis nekoliko tvojih medota kriptovanja i onda saljes i neki parametar PHP stranici koja se medota koristila u tom konkretnom slucaju, a medote se recimo nasumicno biraju.
Mada, ako nemas pristupa ASP stranici onda je bezizlazna situacija. Ali kako onda menjas putanju linka ako ne mozes da menjas ostali kod?
[ nezki @ 03.02.2010. 16:11 ] @
src za iframe na asp stranici podesava se tako sto ja kazem tom administratoru koji je napravio tu stranicu koja je putanja do moje stranice i on je hardkoduje u taj ifreme i to je to.

Ali opet nisam shvatio kako cu ja sa ovom metodom da zabranim da neko na primer kada se uloguje na tu asp stranicu i ucita mu se moja strana u iframe, i onda on ode na view page source vidi putanju za src za iframe i onda copy- paste u browser i eto ga, na mojoj stranici i direktno je pristupio.

Hajde da kazes da mogu da promenim nesto na toj asp stranici kako bi opet mogao da resim problem?
[ ksrele @ 03.02.2010. 16:40 ] @
Nisi razmisjao o vremenskoj sihronizaciji?
Jest da racunari nemaju najpreciznije merace vremena ikad ali su ipak kolko tolko precizni. Poenta je da ti jednom nekako izmeris koliko je sati na PHP serveru a koliko je na ASP serveru u istom vremenskom trenutku!! Onda napravis sistem da kodiras trenutno vreme na ASP serveru i posaljes ga kao GET parametar PHP stranici. Na PHP stranici napravis dekodiranje tog parametra i uporedis ga sa trenutnim vremenom PHP servera. Tu uprogramiras i nekoliko sekundi tolerancije, recimo 5 sekundi je sasvim dovoljno. Cisto sumnjam da ce neko biti toliko pametan da, pre svega, skonta da ti kodiras trenutno vreme, a posle toga i da skonta da to mora poslati u roku od nekoliko sekundi. Jednostavno nece stici da pogleda kod, pronadje iframe src i kopira ga u browser. Jedino trebas neki eksperimentom utvrditi koje ti je vreme tolerancije OK.
A pored trenutnog vremena mozes da posaljes svasta nesto tom PHP serveru kao tajni kod koji se nekako nekim metodom generise i dekodira na prijemnoj strani, ukljuci mastu.
A mozes jos i da ukljucis gore pomenute varijable (IP adresa i referer) kao dodatnu meru zastite.
Mozda ti je bolja varijanta da napravis na tom ASP serveru da ON ucitava tu PHP stranicu i onda je samo parsuje nazad korisniku. Tada niko nece znati koja se to druga stranica dovlaci, a i ako saznaju nece moci tako lako da laziraju IP adresu ASP servera.
Ali, za sve ovo ti je potreban direktan pristup ASP kodu da mozes da isprogramiras ovo tamo.

Nesto razmisljam... spominjali ste te IP adrese i provere putem njih, pa to nije izvodljivo preko iframe tehnike jer ne ucitava ASP server PHP stranicu vec tvoj racunar i tvoj browser sa kojim gledas sadrzaj, zar ne?
[ VladaSu @ 03.02.2010. 16:50 ] @
Taj sto hardkoduje asp moze da na pocetku ucitavanja njegove stranice pozove tvoj sajt sa nekim random parametrom www.tvojsajt.com/zapamti_key.php?key=3Ffwetr5GT53fFFedfdWER
I onda da otvara u iframe tvoju stranicu sa tim parametrom pa ih ti kasnije uporedjujes.

[ ksrele @ 03.02.2010. 17:00 ] @
Citat:
VladaSu: Taj sto hardkoduje asp moze da na pocetku ucitavanja njegove stranice pozove tvoj sajt sa nekim random parametrom www.tvojsajt.com/zapamti_key.php?key=3Ffwetr5GT53fFFedfdWER
I onda da otvara u iframe tvoju stranicu sa tim parametrom pa ih ti kasnije uporedjujes.

Uopste nije losa ideja, cak super ideja, jedino ako to moze i hoce da uradi taj koji uredjuje ASP server. Najelegantnije resenje koje sam do sada cuo.
[ nezki @ 03.02.2010. 17:58 ] @
Samo da proverim da li sam dobro ukapirao.
Znaci ja bih trebao napraviti jos jednu stranu zapamti_key.php i da se ona poziva sa nekim parametrom key=3Ffwetr5GT53fFFedfdWER i ona bi prosledjeni kljuc upisala negde kod mene na primer u neku tabelu u bazu.
E onda kada se ucitava moja stranica index.php?key=3Ffwetr5GT53fFFedfdWER u iframe sa istim parametrom ja uporedim da li prosledjeni kljuc ima u tabeli i ako ima to je to.

Ali kako sam ja time zastitio da kada se neko uloguje na asp stranicu i ucita mu se stranica u iframe i on ode na view page source i copy paste url iz src-a iframe-a i direktno u browser i to je to. Opet moze direktno da pristupi strani.
[ VladaSu @ 03.02.2010. 18:49 ] @
Ne moze ako izbrises taj key iz baze na pocetku stranice koju pozivas preko iframe-a.



[ ksrele @ 03.02.2010. 18:50 ] @
Nece moci opet da ti pristupi stranici.
Zamisli slucaj da neko dodje prvi na ASP sajt. Taj ASP prvo proveri njegov identitet (ovaj se uloguje) i onda ASP sajt 'pozove' PHP stranicu (nije mu potreban nikakav odgovor, znaci samo ce uputiti zahtev ka PHP stranici) save_key.php i prosledi joj neki generisani kljuc. Uzgred, ova komunikacija se ne vidi na strani korisnika jer se radi od servera ka serveru. Onda PHP server ubaci taj tajni kljuc u neku tabelu u bazi.
Ajde da zakomplikujemo slucaj, recimo da u medjuvremenu (pre nego sto se ovom prvom korisniku otvori stranica.php) dodje drugi korisik koji se isto uloguje i posalje tajni kljuc save_key.php stranici. Nista zato, server ce i njegov ljuc da zapamti u bazi.
Onda prvi poziva stranica.php sa tajnim kljucem, PHP proverava da li kljuc postoji u bazi i ako je tu BRISE ga i pusta sadrzaj koji treba, a ako ga NE NADJE onda odbija da prikaze sadrzaj ili prikaze gresku.
Zatim dolazi drugi korisnik i ponavlja se proces, ovaj dobija sadrzaj pa zatim ide i trazi u kodu link koji je dobio, kopira ga i probava da otvori u novom prozoru, ali nema uspeha jer je taj tajni kljuc vec iskoriscen i PHP server mu odbija dati sadrzaj.
Prosto ko pasulj.
Nego, mozda ovo dovede do blagog usporenja kada vise korisnika pokusa da u isto vreme pristupi sajtu, ali treba probati i mislim da nece da predstavlja veliki problem.
[ VladaSu @ 03.02.2010. 19:02 ] @
Bice usporenje ali manje nego zahtev za najobicnijim logom na sajtu ili js ili css fajlom.
Ako ima stotine hiljade poseta u toku jednog sata neka postavi cron da na svakih 10 minuta brise suvisne kljuceve, kljuc neka bude indexirani broj, MyISAM tabela.
[ nezki @ 03.02.2010. 19:58 ] @
Ukapirao sam i mislim da ce mi ovo resiti problem.

Jedino postoji problem ako neko zna putanju do te moje stranie zpamti_key.php i onda prvo pozove nju sa nekim kljucem a onda pozove moju stranicu index.php.

[ ksrele @ 03.02.2010. 20:31 ] @
Objasni mi samo kako ce neko znati putanju te stranice?
[ nezki @ 03.02.2010. 21:32 ] @
Znam da je nemoguce, ali kazem sta ako neko zna, na primer administrator pa kaze ostalima u firmi :) (sala)
Hvala puno svima. Resio sam na ovaj nacin problem
[ VladaSu @ 04.02.2010. 00:33 ] @
Da se i ja malo nasalim, opet mozes da proveris odakle je php pozvan, da li je iz browsera ili drugog servera, ip adresa i ostali hederi.
Ovo moze da se provali ali mnogo teze jer oni treba da naslute da ti to proveravas :)
[ vatri @ 04.02.2010. 06:56 ] @
Mozda postoji jos jedan nacin bez diranja ASP stranice, mada nije toliko siguran opet, ali ne mora se carat sa bazom i brzi je :)

imas 2 fajla: prvi.php i drugi.php

prvi.php:
Code:

session_start();
$_SESSION['login'] = md5($_SERVER['REMOTE_ADDR']);
header("Location: drugi.php");


drugi.php:
Code:

session_start();

if(@$_SESSION['login'] == md5($_SERVER['REMOTE_ADDR']))
    echo 'Login success!';
else 
    echo "Access denied!";
    
session_destroy();


I onda samo das tom ASP-asu da u iFrame ucita prvi.php (ali stavis neko zakodirano ime kao npr: dasjdhlashdksah.php :) ). Sad ne znam da li postoji nacin da se blokira redirekt?
[ vatri @ 04.02.2010. 07:29 ] @
Pardon, ne moze ovako posto se vidi u Source- da pozivas prvi.php. Zaboravi.. :)
[ VladaSu @ 04.02.2010. 15:03 ] @
Citat:
vatri: Mozda postoji jos jedan nacin bez diranja ASP stranice, mada nije toliko siguran opet, ali ne mora se carat sa bazom i brzi je :)

imas 2 fajla: prvi.php i drugi.php

prvi.php:
Code:

session_start();
$_SESSION['login'] = md5($_SERVER['REMOTE_ADDR']);
header("Location: drugi.php");


drugi.php:
Code:

session_start();

if(@$_SESSION['login'] == md5($_SERVER['REMOTE_ADDR']))
echo 'Login success!';
else 
echo "Access denied!";

session_destroy();


I onda samo das tom ASP-asu da u iFrame ucita prvi.php (ali stavis neko zakodirano ime kao npr: dasjdhlashdksah.php :) ). Sad ne znam da li postoji nacin da se blokira redirekt?


Ovo nema sanse da radi jer se opet vidi source kao sto kazes i mora preko baze a ne sesije jer sesija sa ASP server - PHP server nije ista kao sto se posle napravi client iframe - PHP server.
[ nezki @ 11.02.2010. 13:31 ] @
Evo mene opet :)
Jos uvek nisam resio problem.
Sad je problem sto admin koji treba da izmeni asp stranu kaze da je nemoguce pozvati php stranu iz asp-a(u pitanju je aspx strana), a da to nije preko iframe-a ili java scripta.
A onda ako on tako pozove moju stranu onda je to opet vidljivo za ostale korisnike.
Jel zna neko mozda ovde, kako da pozovem ovu stranu zapati_key.php sa generisanim kljucem kao parametrom u asp-u, ili da postavim temu u drugi forum.
[ ksrele @ 11.02.2010. 14:00 ] @
Hmmm? Kako bolan ne moze?
Koliko ja znam iz PHP-a to moze, a ASP nazalost ne znam. Trebalo bi isto da moze...
Npr PHP ima funkciju "parse_url()"...
Evo, burlajuci malo po googlu nasao sam ovo:
Code:

%@ Language=VBScript %>
<%
str = mid(Request.QueryString,5)
str = replace(str,"http://www.domain.com/","")
querystring = split(str,"/")

if lcase(querystring(0)) = "directory" then
'/p/storeid/aid/pid/shopperid/deptid
'Response.Redirect("http://www.domain.com/directory/file.asp?id=" & querystring(2)
else
'Response.Redirect("http://www.domain.com/file.htm")
end if
%> 

Mozda ce mu ovo znaciti
[ ksrele @ 11.02.2010. 14:09 ] @
Ustvari, tek sada vidim da je to obicna redirekcija... :)
Nemam pojma...
A samo je potrebno da jedan server "pozove" stranicu sa drugog servera i znaci, ne treba joj nikakav odgovor niti sadrzaj da se prikaze. To nebi trebao da bude nikakav problem.
[ ksrele @ 11.02.2010. 14:25 ] @
Hahaha... koji sam ja lik...
Ne znam zasto, ali ja sam se bas nesto nalozio na ovaj problem pa tragam za resenjem kao da cu ga ja sam isporogramirati.
Evo, mislim da je resenje na ovom sajtu:
http://www.affiliates4u.com/fo...execute-load-external-url.html
Pozdrav
[ ksrele @ 11.02.2010. 14:33 ] @
Ili ovako:
Code:

using System.Net;

using System.IO; 
WebRequest req = WebRequest.Create("http://www.Website.com/MyPage.aspx?qr="+Value);

//Get the data as an HttpWebResponse object

WebResponse resp = req.GetResponse();

//Convert the data into a string (assumes that you are requesting text)
StreamReader sr = new StreamReader(resp.GetResponseStream());sr.ReadToEnd();

sr.Close();
[ nezki @ 11.02.2010. 16:59 ] @
Hvala ti, probacemo pa cu javiti sta smo napravili