![]() |
#1 |
Goran Pilipović
Sir Write-a-Lot
|
![]() Problem: Sistem privatnih poruka. Na sajtu postoji formular, pisu poruku i kliknu na send. U scriptu koji cuva poruke u bazu stoji ovako nesto:
PHP kôd:
Medjutim, naizgled jednostavno resenje ima problem. Nekim clanovima je referer prazan. Znaci $_SERVER['HTTP_REFERER'] == "" Kako je to moguce? Razliciti su browseri u pitanju a korisnici su sve samo ne strucni da umeju da sakriju referer na neku foru.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
![]() |
![]() |
![]() |
#2 |
Knowledge base
Wrote a book
Datum učlanjenja: 07.06.2005
Lokacija: Neđe ođe...
Poruke: 1.198
Hvala: 339
688 "Hvala" u 178 poruka
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Mislim da je caka u firewall-ovima...
Poslednja izmena od Milos Vukotic : 09. 11. 2005. u 09:37. |
![]() |
![]() |
![]() |
#3 |
Python Ambassador
Master
|
![]() U prevodu ti imaš probleme sa CSRF?
E sad davno je bilo kad sam se zanimao time u php-u. U osnovi šalješ jedan skriveni parametar kroz forme/url/sesiju/kolačić čija vrednost je validna samo za taj zahtev. Da koristiš django, mogao bih ti preporučiti CsrfMiddleware - simple Cross Site Request Forgery protection ![]()
__________________
Python Ambassador of Serbia |
![]() |
![]() |
![]() |
#4 |
profesionalac
Professional
Datum učlanjenja: 15.06.2005
Lokacija: Chicago IL, USA
Poruke: 209
Hvala: 12
12 "Hvala" u 11 poruka
![]() |
![]() Meni se desilo da sam kod drugara naleteo na njegov FireFox koji je slucajno podesen da salje $_SERVER['HTTP_REFERER'] = 'HTTP_REFERER';
pa mi neke redirekcije nisu radile... :-( Znaci, ima i takvih slucajeva. |
![]() |
![]() |
![]() |
#5 |
Goran Pilipović
Sir Write-a-Lot
|
![]() Petre, hvala za link, medjutim to je definicija problema a ne rešenje
![]() Što se tiče skrivenih parametara, ne znam kako si to mislio, da stavim neki "hidden"? To i nije zaštita, a $_SESSION, i $_COOKIE ostaje jer je on ulogovan. Kapiraš šta rade? Dođu na sajt i samo se uloguju. A onda sa svog servera šalju post zahteve na script koji šalje poruke i pošto su ulogovani ovamo, stoji im lepo i SESSION i COOKIE, tako da prođe bez problema. A to se iz javascripta relativno lako uradi... samo napraviš da fura neki array sa id-jevima članova i na load, šalje sledeći... nije neka nauka ![]()
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
![]() |
![]() |
![]() |
#6 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
![]() ![]() |
![]() Prosta CAPTCHA? Znam da smara korisnike, ali ako im jasno naglasiš da je to tu da bi zaštiti njih od spam poruka mislim da će razumeti. 3 cifre je sasvim dovoljno u tvom slučaju IMO.
Što se referera tiče može da se blokira slanje istog jako lako. Čak većina alternativnih browser, pogotovo IE ljuski ima ugrađen "paranoid" mod (ime mu govori sve ![]() ![]() PS: Za one koji ne znaju šta je CAPTCHA.
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog |
![]() |
![]() |
![]() |
#7 |
Super Moderator
Invented the damn thing
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Mozes i sam da generises referer i da ga ubacis u promenljivu sesije.
Recimo na prvoj strani nesto tipa: PHP kôd:
PHP kôd:
Inace, ja bi umesto captche generisao neki hash baziran na username/pass kompbinaciji i ubacio ga u sesiju, a istu proverio na sledecoj strani. Na primer na strani sa koje si zeleo da uzmes referer: PHP kôd:
PHP kôd:
|
![]() |
![]() |
![]() |
#8 | |
Python Ambassador
Master
|
![]() @bluesman: Nešto si rek'o
![]() Citat:
Edit: Čisto da napomenem, ako neki nisu do sada shvatili: Za svaku formu koja menja stanje (aka state) na serveru se koristi dotična kombinacija - naravno tajni ključevi se menjaju za svaki novi zahtev.
__________________
Python Ambassador of Serbia Poslednja izmena od Petar Marić : 10. 11. 2005. u 18:37. |
|
![]() |
![]() |
![]() |
#9 |
Dejan Katašić
Wrote a book
Datum učlanjenja: 10.06.2005
Lokacija: Novi Sad
Poruke: 1.017
Hvala: 129
86 "Hvala" u 43 poruka
![]() |
![]() Ne razumem jedno - želiš da sprečiš postovanje s drugog sajta - ok - a kako izlaziš na kraj ako dođe na tvoj sajt i odatle odradi malo spamovanje od 700 PP?
|
![]() |
![]() |
![]() |
#10 |
Goran Pilipović
Sir Write-a-Lot
|
![]() Pa to mu se ne isplati
![]()
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Subdomain iz $_SERVER['HTTP_HOST'] | User | Regular expression i htaccess | 24 | 26. 03. 2010. 14:27 |
$_SERVER['REMOTE_ADDR'] prazan ? | Ivan | PHP | 22 | 16. 03. 2010. 19:23 |
Koristiti $_SERVER['REQUEST_TIME'] vs time()? | bluesman | PHP | 29 | 07. 11. 2009. 23:40 |
problem -> HTTP_REFERER | flash_back | PHP | 17 | 01. 02. 2007. 22:39 |