problem -> HTTP_REFERER
Pozdrav pre svega..
treba mi mala pomoc a neznam kome drugo da se obratim.. problem je sledeci, napisao sam kod za jednu anketu, cak uradio i ceo (100% ®) background sistem za istu (interesu je me bas sta rade ljudi na anketama i kako se ponasaju).. i imam jedan banalan problem.. ne mogu da nateram online server da mi ispise $_SERVER['HTTP_REFERER'], dobijam empty value a s tim korakom kontam dali je u pitanju neki hack/napad.. dali neko ima neku ideju kako da se ovo izvede? |
Glupo pitanje, ali nadam se da ne pristupaš direktno scriptu u kojem želiš da ispišeš HTTP_REFERER ? ;)
|
Pa odgovor je i da i ne ;)
Konkretno na post forme uporedjujem domen adresu sa predhodnim url-om, ako postoji match anketu karakterisem kao validnu i pravim zapis u bazi, sve suprotno karakterisem kao napad.. problem je u tome da nemogu da izvucem od servera HTTP_REFERER, dobijam konstantno praznu vrednost (ista je prica sa linkovima, bez posta forme).. |
Ne mogu da ti kažem konkretno jer nemam sada strpljenja da gledam tuđi kod, ali evo probaj:
http://www.devprotalk.com/bluesman/b.php kada klikneš na link izađe: referer: http://www.devprotalk.com/bluesman/b.php A to je na istom serveru na kojem je i tvoj sajt. Ili klikni na http://www.devprotalk.com/bluesman/a.php izaći će ova strana kao referer. |
mozda imas antivirus/firewall pa ti on blokira referer.
imaj na umu da postoje korisnici ciji browser ne ostavlja referer, sto zbog antivirusa/firewalla, sto zbog konfiguracije browsera... ne mozes na referer da se oslanjas kao na 'sigurnu vrednost', jer em moze da ne bude set-ovana [av/fw/browser blokira], em moze i da se fake-uje [falsifikuje, podmetne referer kao da je sa tvog sajta, a zapravo uopste ne dolazi odatle] |
je*em mu miša :) evo kako kod mene izgleda taj a.php
HTML kôd:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> --- e, sad sam snimio post :) i da, firewall je bio u pitanju.. Citat:
|
opusteno, snasao sam se :)
Po meni jedino logicno resenje je bilo da imam nesto u mojoj stranici sto ne moze da se generise iz neke druge... i nista, stvar je simple a koristi - imam $cist_kod random string, njega stavljam u jedno sakriveno polje a sha1 tog random stringa stavljam u kolacic.. i resto je puko uporedjivanje :) PHP kôd:
|
a ako browser blokira i cookies? :D
jedino sigurno resenje je preko sesija... mada, procenat onih koji blokiraju cookies je jako mali, pa sto bi se zamlacivao sa tim... |
A preko čega misliš da pratiš sesiju? SID možeš slati samo ili kroz cookie ili kroz URL, a ovo drugo ne savetujem - em ružno, em opasno.
|
ali ako korisiku ne radi cookie, jedino ti ostaje URL.
web aplikacija bi sama trebala da izvali da li korisniku radi cookie ili ne... |
A šta ćeš da radiš kada te neko ovako napadne?
Mislim da nije vredno truda da se zbog 3-5% korisnika izlažeš dodatnim sigurnosnim rizicima - IMHCO bolje bi bilo da to vreme utrošiš na proveru sigurnosti sistema. |
preko sesije vucem samo capitchu ;) ali ako se negde varam molim te me ispravi :)
Citat:
Citat:
|
koliko znam, ne mozes provaliti je li korisnik prihvatio cookie ili ne. setcookie uvijek vrati true (osim ako si nesto zabrljao sa samim parametrima), nema feedback-a od browsera ako su cookies iskljuceni.
Citat:
|
^ Obicno se setuje jedan test cookie, i script odmah pokusa da procita je li setovan. Ako nije, znaci da je cookie u browseru iskljucen.
|
^ Zar za ovo nije potreban refresh? Ako se ne varam cookie se setuje kroz HTTP header tako da je nemoguće videti da li je cookie setovan dokle god se stranica ne osveži. Ispravite me ako grešim...
|
^ Tako je. Setovao bi cookie na prvoj strani, na sledecoj bi se proverio da li je uopste setovan test cookie, ako nije, znaci da je iskljucen.
Mada, moze da se iskoristi iframe ili ajax u okviru iste strane. |
pa tako reci... to znam, ali je po tvojoj poruci izgledalo kao da script SAM radi posao pa sam se se nasao u nedoumici i sa jednim "wtf" iznad glave :)
|
opusteno :) znaci na osnovu submita pratim i kategorisem greske, ako je npr: bas sve od provera ok, pavim zapis tipa 0 ili 'sve je ok' sa svim mogicim parametrima (ip, trenutno vreme, dolazeci url itd..). ako je npr: sve lepo popunjeno a samo captcha 'ne pase' dobijam error 'captcha greska'.. tu je i tip 'greska' kao i 'napad'.. ovo zadnje ume da prevari samo kada korisnik uradi refresh posto je uradio submit.. ali lako to utvrdim preko dolazeceg url-a (sem ako ga bas neko nije sad falsirao)..
inace malo sam sredio sigurnosan kod, sada je nesto tipa [sha1($flash_back.$cist_kod.$flash_back);].. radi po'so :) ajd malo sredim baze pa cu da vratim backeye ;) --- edit: --- nego da dodam, bilo je i likova (u bukvalnom kontekstu) koji se prijave, znaci ime, prezime real email i ne ostave bas ama nikakav komentar niti nista sto bi moglo koristiti.. cak izaberu opciju da ne zele da se prijave na mailing listu.. hm, pa sto su se onda uopste i prijavljivali da mi je samo znati ;) nego imam mali problem, mail koji salje server nakon uspesne prijave karakterise se kao spam u gmail-u tj. nepozeljna posta.. mislim da je nesto do samog headera poruke ["\"Overheat-Tuning\" <admin@overheat-tuning.com>"] pa ako moze neki mali savet bilo bi lepo :) |
Vreme je GMT +2. Trenutno vreme je 19:34. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.