[ Príspevkov: 5 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 09.05.09
Prihlásený: 07.10.13
Príspevky: 63
Témy: 20 | 20
Bydlisko: Košice
NapísalOffline : 08.02.2010 20:00 | Praca so subormi

Tvorim skript, v ktorom administrator moze pridavat subory ktore mozu stiahnut registrovani uzivatelia. Kazdy uzivatel bude moct stiahnut iba niektory zo suborov, iny uzivatel iny zo suborov. Ako by som mal riesit ochranu toho, ze jeden uzivatel nemoze stiahnut iny subor nez aky je mu povoleny.

Napadla ma nahodne generovana cesta k suboru ktora by sa zobrazovala iba uzivatelovi s pravom na subor, a teda uzivatel, ktory na to pravo nema, by nemal odkaz ako sa k tomu suboru dostat... avsak to si vsak moze zistit (napr. od ineho uzivatela ktory ten odkaz ma).

Preto by som chcel vediet, ako na to, aby uzivatel ktory nie je prihlaseny respektive uzivatel ktory nema na dany subor pravo nestiahol subor zadanim jeho URL ktore mu posle uzivatel ktory k suboru pravo ma. V jazyku kodu by som potreboval ze skontroluje podla $_SESSION kto je prihlaseny a na zaklade toho mu bud zacne stahovat subor alebo vypise spravu o chybe.

Hadam som to dost zrozumitelne popisal.

Dakujem za rady.


Offline

Čestný člen
Čestný člen
Praca so subormi

Registrovaný: 11.08.07
Príspevky: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 08.02.2010 20:58 | Praca so subormi

Budes mat linky v tvare stiahni.php?subor=nazov-suboru.ext, tam to hocijako skontrolujes a potom ponuknes subor na stiahnutie, priklad mas tu: http://sk2.php.net/readfile


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3991
Témy: 96 | 96
NapísalOffline : 09.02.2010 9:22 | Praca so subormi

Samotnú bezpečnosť vyriešiš buď v DB, alebo samostatnom súbore, kde budeš mať informácie, ktorá skupina užívateľov, môže vidieť dané súbory. A potom to budeš len overovať ...


Offline

Skúsený užívateľ
Skúsený užívateľ
Praca so subormi

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE
NapísalOffline : 09.02.2010 11:40 | Praca so subormi

Ja sa pokúsim poradiť trochu komplexnejšie, lebo chalani hore to síce nemysleli zle, ale zdá sa mi, že by si ich nemusel úplne pochopiť.

Pri robení takéhoto systému musíš mať niekoľko častí - uloženie súborov, schému prístupov a potom nejaké to rozhranie na interakciu s užívateľom.

Uloženie súborov - predpokladám, že máš Linuxový server Apache. Tam toto uloženie spravíš veľmi jednoducho - buď budeš súbory ukladať do priečinka, ktorý je mimo webového priečinka (tj. web máš napr. v priečinku /home/scrysurn/public_html a tie súbory budeš ukladať do /home/scrysurn/subory ) alebo môžeš ukladať do webového podpriečinka, ale musíš ho ochrániť súborom .htaccess (tj. napr. súbory budeš ukladať do /home/scrysurn/public_html/subory a v tom priečinku bude súbor .htaccess v ktorom bude napísané
Kód:
deny from all
). Oba prístupy zabezpečia, že aj keby niekto vedel presný názov súboru na servri a napísal do prehliadača cestu k nemu, Apache mu ten súbor na stiahnutie nedá (to ti umožní napr. aj obmedziť počet stiahnutí súboru).

Schéma prístupov a rozhranie - to nechám na tebe; asi najlepšie sa to dá spraviť tak, že keď uploadneš súbor, tak na server sa uloží pod iným názvom (nejakým náhodne vygenerovaným, aby si sa vyhol problému s rovnakými názvami) a napr. do databázy sa zapíše aký bol pôvodný názov súboru a aký je názov uloženého súboru. Keď dostaneš požiadavku na nejaký súbor tak sa nejakou logikou rozhodneš, či ten užívateľ môže dostať želaný súbor (napr. cez ACL alebo nejakú inú autorizačnú schému) a ak áno, tak skriptom podobným tomuto vytiahneš súbor a pošleš ho užívateľovi:
Kód:
<?php
$user = $_SESSION['user'];
$file = osetri_vstup($_GET['file']);
$filename = zisti_nazov_suboru_na_servri($file);
if (!uzivatel_je_autorizovany($user, $file)) {
    die("Nemas pravo na pristup k tomuto suboru.");
}

if (file_exists($filename)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.$file);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filename));
    ob_clean();
    flush();
    readfile($filename);
    exit;
}
?>
Ešte sa to dá vylepšiť tak, že podľa typu súboru správne nastavíš hlavičku Content-Type (tá čo tam je teraz možno nebude správne fungovať napr. pri textových súboroch, treba vyskúšať).


_________________
A. S. Tanenbaum píše:
The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 09.05.09
Prihlásený: 07.10.13
Príspevky: 63
Témy: 20 | 20
Bydlisko: Košice
Napísal autor témyOffline : 09.02.2010 14:02 | Praca so subormi

Presne to som potreboval pocut, p360t - vdaka za komplexne vyriesenie, v casti Uloženie súboru je vsetko co som chcel :)

Vdaka readfile() uz chapem ako to vlastne urobit elegantne :) povodne som chcel iba jednoduche presmerovanie na subor cim by uzivatel zistil tu URL a tym vznikal ten problem co som popisal na zaciatku.

To ostatne uz mam viacmenej premyslene a s ochranou cez .htacces to bude vsetko. Zatial dakujem za pomoc, dnes-zajtra to sprevadzkujem a ak by som este na nieco narazil tak napisem :)


 [ Príspevkov: 5 ] 


Praca so subormi



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Práca so súbormi

v Assembler, C, C++, Pascal, Java

6

350

14.11.2015 23:26

tyrenus

V tomto fóre nie sú ďalšie neprečítané témy.

Praca s textovymi subormi

v Operačné systémy Unix a Linux

2

129

19.04.2015 10:05

expoox

V tomto fóre nie sú ďalšie neprečítané témy.

Praca so subormi linux

v Assembler, C, C++, Pascal, Java

4

599

13.12.2009 14:26

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

Praca so subormi C

v Assembler, C, C++, Pascal, Java

3

1619

05.10.2009 23:02

juho

V tomto fóre nie sú ďalšie neprečítané témy.

Help!!! PHP práca so súbormi

v PHP, ASP

3

725

16.12.2006 23:03

Citron-ca

V tomto fóre nie sú ďalšie neprečítané témy.

Windows Vista SP1 - stale pomala praca so subormi...

v Operačné systémy Microsoft

4

265

14.11.2008 23:28

walther

V tomto fóre nie sú ďalšie neprečítané témy.

PC zostava 2000€ práca s videom, programovanie, práca v photoshope atď...

[ Choď na stránku:Choď na stránku: 1, 2 ]

v PC zostavy

37

741

25.01.2017 9:44

Xaltotun

V tomto fóre nie sú ďalšie neprečítané témy.

problem so subormi

v PHP, ASP

2

147

25.09.2012 17:12

korkomaster

V tomto fóre nie sú ďalšie neprečítané témy.

Array so subormi

v PHP, ASP

2

280

05.06.2009 19:57

Draex

V tomto fóre nie sú ďalšie neprečítané témy.

Problem su subormi

v Ostatné programy

4

413

08.02.2009 19:18

zeky

V tomto fóre nie sú ďalšie neprečítané témy.

PROBLEM S KRYPTOVANYMI SUBORMI

v Operačné systémy Microsoft

4

179

04.01.2008 21:27

ddumbbo

V tomto fóre nie sú ďalšie neprečítané témy.

problem zo zasifrovanymi subormi

v Operačné systémy Microsoft

2

184

12.11.2007 18:25

ts.jethro

V tomto fóre nie sú ďalšie neprečítané témy.

problem so subormi na ploche

v Operačné systémy Microsoft

2

196

25.03.2009 19:18

Samoo

V tomto fóre nie sú ďalšie neprečítané témy.

stiahnut stranku z flah subormi

v Ostatné programy

4

163

14.01.2012 20:40

p4tooo

V tomto fóre nie sú ďalšie neprečítané témy.

subory .avi so subormi .index

v Video programy

1

65

28.04.2014 13:14

Mandy

V tomto fóre nie sú ďalšie neprečítané témy.

Foobar 2000 problem s CUE subormi

v Audio programy

10

703

20.03.2010 22:28

maxcavalera



© 2005 - 2017 PCforum, edited by JanoF