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:


Vreme je GMT +2. Trenutno vreme je 18:26.

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.