DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Sva početnička pitanja (http://www.devprotalk.com/forumdisplay.php?f=40)
-   -   Kontrola pristupa fileu (http://www.devprotalk.com/showthread.php?t=9029)

blackshtef 16. 08. 2010. 02:30

Kontrola pristupa fileu
 
Eto mene opet :)

Dakle, imam neke formulare koji se proslijeđuju na njihove procesore.
Svaki taj procesor na početku ima ovu foru da ga ne može netko otvoriti direktno.

PHP kôd:

if($_SERVER["REQUEST_METHOD"] != 'POST')
    {
        echo 
"No can do";
    } 

E sad, ja bi to stavio na većinu fileova koje includeam, a koji nisu nužno form procesori. Primjerice, menu mi je u zasebnom menu.php fileu, i njega svugdje ubacujem sa
PHP kôd:

include ('menu.php'); 

Ako onaj kod gore ubacim u menu.php, opet će mi javiti "No can do" čim se otvori index.php ili bilo koji drugi file koji includea menu.php

Razmišljao sam možda sa HTTP_REFER, pa ono, ako nema referera, znači da je upisano direkt u URL, jel...al opet, kad ga netko pozove, opet baca error, bilo da je direktno preko URL-a ili ga file poziva...
Vjerojatno postoji neko rješenje za to?

kickloop 16. 08. 2010. 02:46

if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');

LiquidBrain 16. 08. 2010. 08:46

Kôd:

if($_SERVER["REQUEST_METHOD"] != 'POST')
    {
        echo "No can do";
    }

Ovo samo zabranjuje get request, svako moze da mu pristupi samo ako koristi POST request. Tako da ti to nije nikakva zastita...

blackshtef 16. 08. 2010. 08:46

Citat:

Originalno napisao kickloop (Napišite 87749)
if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');

Hm, opet isto :/
Tj. otvori index.php do mjesta includeanja i tamo gdje treba biti menu.php stoji ova die() poruka...

blackshtef 16. 08. 2010. 08:49

Citat:

Originalno napisao LiquidBrain (Napišite 87751)
Kôd:

if($_SERVER["REQUEST_METHOD"] != 'POST')
    {
        echo "No can do";
    }

Ovo samo zabranjuje get request, svako moze da mu pristupi samo ako koristi POST request. Tako da ti to nije nikakva zastita...

True, ali konkretni slučaj je da je ovo više "zatvoreni" site, projekt za faks, pa je ovo čist dovoljno, toliko da se spriječi otvaranje putem URL-a...

Ali volio bih vidjeti neko naprednije/bolje rješenje :)

kickloop 16. 08. 2010. 09:08

Dodaš u index.php

define("INCLUDE_CHECK", true);

a u file (npr. menu.php):
if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');

blackshtef 16. 08. 2010. 09:44

Whoa, odlično!

Hvala ti ;)

EDIT: ovo je još bolje i od onog rješenja sa REQUEST_METHOD, awsm awsm :)

eclipse 16. 08. 2010. 10:30

Da postavim jedno pitanje u sličnom tonu.
Radi se o dozvoli pristupa datotekama na serveru (eng. file permission access/control). Ako sam dobro shvatio postoje dva načina reguliranja (tj. jedan za windows okruženje, drugi za unix/linux). Pošto radim u windowsima, a recimo da hoću da mi stranica bude na linux hostu, prema čemu da se ravnam u toj situaciji, na svoj operativni sistem ili hosting OS? Da li zaštita učinjena na windowsima ujedno vrijedi na linux hostu? Opet, ako se takva zaštita radi kroz php (chmod f-ja), koriste se linux naredbe odrednice 755 i sl. Može malo pojašnjenje cijele te situacije

JovanT 16. 08. 2010. 11:04

Ne znam kako bi to išlo u Windowsu ali pod Linuxom možeš pomoću .htaccess da zabraniš pristup određenim folderima u koje smeštaš zaštićene fajlove. A zatim napišeš PHP skriptu koja će u sebi imati proveru pristupa (može li korisnik da skine ovaj fajl?) i ako je provera prošla, da pročita sadržaj fajla i uradi echo korisniku. Naravno, uz to šalješ i odgovarajuće headere.

vidak 16. 08. 2010. 16:43

Citat:

Originalno napisao JovanT (Napišite 87761)
... ali pod Linuxom možeš pomoću .htaccess da zabraniš pristup ....

JovanT je u pravu
.htaccess je prvi način da regulišeš pristupe fajlovima
služi da sve url-ove usmeriš ka index.php

Druga stvar ... rekao si da include menu.php u sve stranice... to znači da nemaš MVC organizaciju. Naravno da ti za faks nije ni potrebno ali bi ti znatno olakšalo dalji razvoj projekta. Sam MVC koncept jeste na prvi pogled težak ali ti u kasnijim fazama razvoja aplikacije mnogo, mnogo olakšava život.

Savet: batali Windows, pređi na Linux. Tako ćeš vremenom mnogo bolje razumeti celu problematiku. :1002: :1002: :1002: :beer:

blackshtef 16. 08. 2010. 17:11

Došlo je do nesporazuma, JovanT je odgovarao vezano uz eclipse-ov problem ;)
Al dobro, vidjet ćemo šta bi se može MVC organizacijom eventualno dobiti, hitnije mi je da riješim projekt, a kasnije ako se zainteresiram više za programiranje - nastojat ću da bude i profesionalnije :)

bluesman 16. 08. 2010. 17:19

Citat:

Originalno napisao vidak (Napišite 87772)
Savet: batali Windows, pređi na Linux. Tako ćeš vremenom mnogo bolje razumeti celu problematiku. :1002: :1002: :1002: :beer:

Volim ovaj forum jer uvek može da se nađe pravi savet, da se lakše otkrije krivac za sve probleme. Mister, imaš možda još neki dobar savet?

blackshtef 18. 08. 2010. 02:55

Citat:

Originalno napisao kickloop (Napišite 87754)
Dodaš u index.php

define("INCLUDE_CHECK", true);

a u file (npr. menu.php):
if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');

hm, iako ovo radi u redu s ostalim fileovima, sa formularima izgleda da neće :/
Imam
PHP kôd:

define("INCLUDE_CHECK"true); 

u formular.php koji sadrži registracijsku formu koja ima action="procesor.php" (između ostalog ima i include headera i menija, koji su isto zaštićeni i fino se prikažu)

procesor.php ima na početku odmah ovaj if uvjet, i kad se stisne submit na formularu, procesor kao da ignorira to što je konstanta definirana i baci mi grešku.
Ako zakomentiram to, sve radi super, al džaba mi onda define() :)

vidak 18. 08. 2010. 03:13

Citat:

Originalno napisao bluesman (Napišite 87775)
Volim ovaj forum jer uvek može da se nađe pravi savet, da se lakše otkrije krivac za sve probleme. Mister, imaš možda još neki dobar savet?

Kaži koji problem imaš. Ako znam da ti pomognem, reći ću ti kako mislim da se problem reši.
Ako ti se sviđaju moji saveti, slobodno mi se zahvali klikom.
Nema potrebe da me zoveš mister. Na forumu se predstavljam svojim imenom.

bluesman 18. 08. 2010. 12:35

Mister Vidak, vi ste neki doktor ili psiholog? :) Prvo dajete savete kako da nam bude bolje a onda ste odmah provalili da imam problem i već imate rešenje. Svaka čast :)

vidak 18. 08. 2010. 15:19

Citat:

Originalno napisao bluesman (Napišite 87861)
Mister Vidak, vi ste neki doktor ili psiholog? :) Prvo dajete savete kako da nam bude bolje a onda ste odmah provalili da imam problem i već imate rešenje. Svaka čast :)

Nisam doktor a ni priholog, a nisam ni mister :).
Bluesman, tebi nisam ni jedan savet dao. Pitao si me da li imam još neki dobar savet i ja sam ti odgovorio da kažeš koji problem imaš pa ako znam da ti pomognem, reći ću ti kako da se problem reši. Nije li bilo tako?
... iskreno, tvoje postove sa uživanjem čitam tako da je verovatno malo oblasti gde bih ja mogao nekim savetom da ti pomognem.
... 'oćemo dalje na PP?

bluesman 18. 08. 2010. 21:05

Pa ne znam, ako ne umeš da mi pomogneš oko mog problema što ne umem da prećutim pa makar i na lakat progovorio - onda ništa. Svi moji drugi problemi su ušuškani i sakriveni pa nisu toliko očigledni :)

Aj sada bez zezanja, pogledaj svoj "savet" pa kaži koliko je primenjiv ... da ne bih nikoga prozivao upotrebiću sebe kao primer. Eto kažeš i sam da sa i ja naučio ponešto, a taj isti "ja" radi već skoro 20 godina na windows-u, kako objasniti tu kontradiktornost sa tvojim savetom da se "batali windows ako imaš nameru nešto da naučiš"? Razumeš šta hoću da ti kažem? Sada valjda i razumeš zašto moram da prokomentarišem takav savet?

blackshtef 18. 08. 2010. 22:38

vidak, problem je u ovome:
ja tražim problem za rješenje sada, ne za ubuduće. Dugoročno, možda bi mi prelazak na linux bio dobra stvar, ali mi sada stvarno nije do ikakvih promjena, nego do toga da završim ovaj projekt.

Tvoj savjet da pređem na linux da bih nešto pravo naučio je u konkretnom slučaju koristan == 0 - zato jer u ovom topicu pričam o programiranju i kako izvesti nešto s PHP-om.

To ti je kao da čovjeku na autocesti pukne guma i zamoli te za pomoć, a ti mu odgovoriš - majstore, ako ne želiš više imati ovakvih problema, kupi tenk...
promijeni čovjeku gumu, a onda mu možeš predložiti tenk :)

vidak 19. 08. 2010. 01:33

@bluesman & @blackshtef Pogledao sam detaljno postove i našao objašnjenje zašto je za @blackshtef-a moj savet "koristan == 0". User eclipse je postavio pitanje o Unix permisijama nad fajlovima i pristupu fajlovima na različitim sistemima. Moja greška je što sam ukačio da je blackshtef ostavio taj post pa je komentar o prelasku na Unix delom bio u tom smislu.

Smatram da je prelazak sa Win na Lin često težak i zahteva dosta nerava. Dosta stvari oko podešavanja samog sistema ide teže nego na Win pa se samim tim mnogo korisnih stvari brže i detaljnije nauči. To sve utiče na razumevanje logike sistema, t.j. kako sve to funkcioniše a to bi bleckshtef-u pomoglo oko razvoja projekta(moje mišljenje i iskustvo - ne mora se niko složiti sa tim).
Smatram i da su MS proizvodi koncipirani da programeru olakšaju život, poboljšaju produktivnost ali ceo taj koncept, od samog začetka DOS-a i ukidanja permisija i root pristupa, koliko god da je ubrzao razvoj IT industrije isto toliko je nevolja doneo. Moje mišljenje je da je najveći nedostatak celog MS koncepta i njihovih alata mogućnost izrade proizvoda uz nizak nivo razumevanja međuzavisnosti delova sistema i uz uspavljivanje programerovog kritičkog uma, mada to ne mora biti pravilo kod svakog programera.

@bluesman to što ne umeš da prećutiš za mene nije problem. Više volim ljude koji su otvoreni, kažu šta misle pa makar i na lakat progovorili nego onu drugu, podmuklu varijantu. Moj komentar na to "da si ti ponešto naučio i ako radiš na Win" je da čitajući tvoje postove postoji bitna razlika u nivou znanja između nas dvojice, u tvoju korist.

@blackshtef - koliko je poređenje sa gumom i savetom da kupiš tenk korisno videćeš kako se sve više budeš mučio sa organizacijom fajlova i pokušajima da osiguraš sistem na način koji sada radiš. Takve aplikacije su odlične za reverzni inženjering a vremenom ćeš i sam zaključiti da ne treba menjati gume na oštećenim felnama. Sve u svemu, blackshtef, izvini na mom pokušaju da pomognem. Neću te više smarati i voleo bih da ne ulazimo u dalje diskusije.

eclipse 21. 08. 2010. 21:21

Da bi omogućio korisnicima postavljanje slika, permisije trebaju biti 777 ili makar 766?
ps. je li generalno ovo dobar pristup: slike spremam u direktorije, a u bazu sve podatke o slici?

mangia 21. 08. 2010. 23:06

^^^ Potrebne su takve permisije ako se web server vrti pod jednim user-om a vlasnik dir-a je drugi user.

Ovo se može izbjeći ako se koristi recimo mod_fcgid odnosno fastcgi gdje se skripte izvršavaju pod samim korisnikom koji je ujedno i vlasnik dir-a i fajlova.

Što se tiče smještanja slika u bazu... Slike stavljaj u dirove, grupiši na 100 načina ali nemoj u bazu... U bazi drži podatke o slikama...


Vreme je GMT +2. Trenutno vreme je 00:58.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.