jol.us_
14.04.2006, 19:30:50
Szukam sprawdzonej metody ograniczenie upload'u plikow. Chodzi o to aby osoba, ktora nie przeszla autoryzacji nie mogla pobrac plikow z okreslonego katalogu. Jezeli ktos przejdzie autoryzacje to ma dostep do pliku poprzez zwyklego linka.
Do tej pory zabezpieczalem pliki umieszczajac je w bazie danych i sprawa byla prosta, ale teraz musze to trzymac w katalogu na serwerze. Myslalem zeby moze nadac jakas tymczasowa nazwe w tymczasowym katalogu ale skad niby mialbym wiedziec kiedy taki plik skasowac (kiedy zakonczy sie pobieranie pliku).
Googlanie i przekopanie postow na forum nic nie dalo
popo
14.04.2006, 19:49:52
proponuje trzymac pliki w katalogu chronionym przed dostepem przez www i wysylac je za pomaca skryptu php tak samo jak z bazy tyle ze czytasz plik z katalogu zamiast z bazy a w bazie pamietasz tylko sciezki z nazwami plikow.
jol.us_
14.04.2006, 20:18:48
A dalo by sie cos wiecej. Jaki to niby mialby byc katalog? Poza httdocs czy po prostu odpowiedni chmod? W jaki sposob wyswietlic linka? Czy da sie np. wyswietlic tak zabezpieczonego jpg'a czy nie? Moze jakis pseudokod?
tworzysz tabelke w bazie danych o nazwie 'file_list':
id - unikalne id pliku
file - url do pliku
a potem: pobierz.php?id=ID_PLIKU aby rozpoczac sciaganie
kod pobierz.php:
<?php
if (...) { // tu sprawdza czy user jest zalogowany
header("Content-Type: application/force-download\n"); header('Content-Disposition: attachment; filename='.$r['file']); } else {
header("HTTP/1.0 404 Not Found"); }
} else {
header("HTTP/1.0 404 Not Found"); }
?>
jol.us_
14.04.2006, 20:31:02
A katalog? chmod? Jesli tak to jaki?
A jesli autoryzacja bedzie na sesji czy tez ciastkach to nie dostane bledu w stylu naglowek juz zostal wyslany?
z tego co pamieta header'a nie mozna uzyc, gdy juz wyslales do przegladarki jakis tekst, a my nic nie wysylalismy przedtem.
pliki mozesz trzymac w katalogu 'files' a w bazie danych takie cos:
id | file
1 | files/plik.rar
2 | files/download.exe
chmod jest nie istotny. 644 powinno wystarczyc.
jol.us_
14.04.2006, 20:38:52
chmod jest chyba jednak istotny, aby nikt nie tafil przez przypadek w dobry katalog i dobra nazwe pliku. Pewnie to by bylo trudne, ale nie niemozliwe.
ustawiasz w pliku .htaccess, ktory jest w folderze files "deny from all" i problem z glowy. nawet znajac sciezke do pliku nie sciagniesz go. jedynie przez pobierz.php
jol.us_
18.04.2006, 07:27:22
bardzo mi pomogles, dziekuje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.