Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nadanie uprawnień na rekordy - MYSQL
przemek89k
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 31.08.2011

Ostrzeżenie: (0%)
-----


Witam,
posiadam utworzoną bazę danych : załóżmy że są tam tabele Pracownik(idpracownik, imie, nazwisko), oraz Zlecenie(idzlecenie, idpracownik, opis). Stworzyłem program, z którego będzie korzystało wiele osób - umożliwia on dodawanie rekordów do tabel, edytowanie i usuwanie. Zawiera on moduł logowania, w którym wpisuje się identyfikator pracownika - na jego podstawie pobierane są rekordy z bazy danych - w ten sposób użytkownik pracuje wyłącznie na rekordach dla niego przeznaczonych.

Problemem jest zabezpieczenie bazy danych - do połączenia z bazą danych wykorzystywane jest konto "roota". Zastanawiam się nad stworzeniem użytkownika z uprawnieniami select, insert, update, oraz delete dla wybranej bazy danych - będzie to o wiele bezpieczniejsze (IMG:style_emoticons/default/smile.gif) Rodzi się kolejny problem - ponieważ w ten sposób, ktoś kto chciałby namieszać w bazie danych, mógłby nie korzystać ze stworzonego przeze mnie programu, ale bezpośrednio zalogować się do PhpMyAdmin. W ten sposób zobaczy on nie tylko swoje rekordy, ale wszystkie rekordy z tabel do których ma uprawnienia.

Jak w takim razie nadać uprawnienia użytkownikowi np. "user", aby miał dostęp do tabeli Pracownicy ale tylko rekordu, którego id = 1, oraz tabeli Zlecenia ale tylko rekordów gdzie idpracownik = 1. Tabele są ze sobą powiązane tzn. pracownik może mieć wiele zleceń, ale zlecenie należy do 1 pracownika (stąd klucz obcy idpracownik w tabeli Zlecenia).
Chodzi mi o to, że nawet jak ten user zaloguje się do phpmyadmin to będzie mógł robić tylko to samo co w moim programie - czyli przeglądać tabele z rekordami, których id = 1.

-------------------
Może jeszcze raz napiszę o co mi chodzi ....

W bazie danych posiadam tabelę "Zlecenia" z kolumnami "idzlecenie, idpracownik, opis". Tabela Zlecenie zawiera 5 rekordów :

id_zlecenie, id_pracownik, opis
1 1 aaaa
2 1 vvvv
3 2 dddd
4 3 ssss
5 1 cccc

W programie mam ustawione, że logując się na użytkownika o identyfikatorze 1 z bazy danych są pobierane rekordy z tabeli "Zlecenia" gdzie id_pracownik = 1 (to jest łatwe do zrobienia). Jednak do połączenia z bazą danych wykorzystywane jest konto z uprawnieniami, które pozwala przeglądać wszystkie rekordy w tabelach - czyli ktoś logując się na PhpMyAdmin zobaczy rekordy należące do pracownika z id =2, oraz z id=3 i może coś pomieszać. Czy można to jakoś zabezpieczyć ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bpskiba
post
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Mam wrażenie, że przemkowi chodzi o szerszy temat pod nazwą aplikacje bazodanowe.

Gdy jedna aplikacja jest uruchamiana na wielu maszynach. Często wszystko, co potrzebne do połączenia do z bazą danych przechowuje się w pliku ini.
Wtedy aplikacja przy uruchomieniu zaczytuje plik ini, ustanawia połączenie z serwerem danych i przeprowadza autentykację użytkownika.
Jeżeli trafi się rozgarnięty złoczyńca otworzy sobie taki ini notatnikiem, przeczyta jaki jest silnik bazy danych, adres serwera danych, nazwa użytkowkika bazy oraz hasło.
Następnie MSSQL studio lub SqlYog w zależności od potrzeb i gotowy dostęp do całej bazy. Można na przykład sprawdzić ile zarabiają koledzy.
W przypadku serwerów web ten temat właścieie nie istnieje.
Jeżeli chodzi o aplikacje dane te należy przechowywać w postaci zaszyfrowanej.

Ten post edytował bpskiba 14.06.2012, 16:25:24
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 10:53