Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak zabezpieczac zasoby w plikach i w bazie?
Forum PHP.pl > Forum > PHP
Beynar
1. Jak najlepiej zabezpieczac zasoby (pliki, media) zaleznie od dostepu w mysql?
Jak naj-efektywniej sterowac apachem przy przydzialniu odstepow do zasobow w plikach?

co sadzicie o metodzie zatrzymania dostepu w .htaccessie (PHP_ALLOW) i czytanie zasobu za pomoca virtual();
czy moze calkowicie wyprowadzic zaosby poza document_root i jakos je wczytywac...?

Dostep do zasobow bedzie ustalany w tabelkach wiec dobrze by bylo to jeszcze zgrac, zeby nie pisac dwa razy dostepow.

2. czy podjescie, ze 1 user = 1 konto mysql jest dobre? Wtedy moge dla kazdego przydzielic uprawnienia na na bazie co zwikesza bezpieczenstwo ale co jesli bede mial np. 500 userow? Pozatym jak dawac uprawinienia do tabeli tj. USERS? moge pozwolic na SELECT na niej lub nie... albo stworzyc widok (wirtualna tabele) z jednym rekoredem (danymi jednego usera) i dac temu userowi access do tej wirtualnej tabeli. Tylko, ze wtedy mam duzo wirtualnych tabel
Kostek.88
To zależy od tego, co planujesz zrobić. Musisz zrobić założenia, co chcesz osiągnąć. Czy Twój projekt pozwoli na takie rozwiązania. Opisz to dokładniej.
bełdzio
moze?
Beynar
Projektujemy system e-lerningowy. Uzytkownicy beda podzieleni glownie na: uczniow i nauczycieli. Moze napisze, co wymyslilismy a wy powiecie co nalezaloby poprawic.
Ogolny zarys uzytkownikow, grup i przywilejowania:

Tabela USERS, w sklad ktorej wchodzi klucz UID, i ich dane osobowe
Tabela GROUPS, klucz glowny GID, opis grupy etc..
Tabela USERS-GROUPS to tylko dwie kolumny UID i GID same wiazania
Tabela ACCESS to (jakis klucz glowny), GID, R(ead), W(rite), e(X)ecute - flagi i RESOURCE_ID
czyli w tej tabeli przydzialam dostep do konkretnych zasobow ktore sa opisane w odpowiednich tabelkach

Problem w tym, ze:

1) nadaje uprawnienia tylko dla grup
2) przywilejowanie trzymane w dwoch miejscach: silnik mysql i moje wlasne w tabelkach
3) Jak trzymac uzytkonikow w RDBMS (mysql)? Raczej wykluczamy 1user=1user w systemie bazy danych ze wzgledu na mnogosc userow wiec usersi w systemi bazy danych moga byc odwzorowaniem grup w aplikacji. Tylko jesli jeden user nalezy do kilku grup to do ktorego usera systemu bazy go zalogowac?
4) Zasoby sa reprezentowane przez konkretne rekordy w tabeli. Np w tabeli TESTS, jeden konkretny test to jeden zasob. W takim razie jak moge dac dostep do tylko jednego testu? Jedyne co mi przychodzi na mysl to towrzenie do kazdego wirtualnej tabeli (widoku) z tym jednym testem, a nastepnie danie do niego dostepu.
5) Czesc zasobow bedzie tylko zlinkowana w tabelach zasobow w bazie danych. Tak naprawde beda przetrzymywane w fizycznych katalogach wiec jak najefektywniej zabronic do nich dostepu i jak autentykowac userow spojnie z dostepem w tabeli ACCESS? Powiedzmy ze wyprowadzanie plikow poza zasieg apacha to nie problem ale jak je potem zalaczac?
templar
Trzymaj się zasady KISS (Keep it Stupid Simple).

Jeśli user lub grupa ma w tabeli ustawiony dostęp do danych zasobów i chce coś ściągnąć, to po prosty tylko Ty znasz fizyczną ścieżkę do danego katalogu w skrypcie php, odczytujesz uprawnienia, jeśli są OK - odczytujesz zasób i wysyłasz go do przeglądarki header'em, a użytkownik nawet nie wie gdzie znajduje się plik. Napisz sobie jedną prostą funkcję, jesli mam uprawnienia, to read stream i header z binarkami leci, jesli nie, to adieu.

poczytaj tutaj.

pozdro!
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.