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ć ? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 31.08.2011 Ostrzeżenie: (0%)
|
Cytat Coś motasz.... najpierw piszesz ze to user sam wprowadza dane do własnej bazy. Teraz piszesz, że to ty mu przekazujesz dane do bazy.... Weź się chłopie zdecyduj.... Chyba ty nie rozumiesz, co napisałem : Cytat Właśnie o to chodzi, że administrator (np. ja) przekazuje mu dane, które musi wpisać aby uzyskać połączenie z bazą danych. User korzysta z programu - który łączy się z bazą danych. Aby nawiązać połączenie konieczne jest podanie informacji do klucza "mysql connection" (nazwa bazy danych, serwer, użytkownik i hasło). Program ma być uniwersalny, a więc jak ktoś założy sobie bazę danych o nazwie "ala ma kota", loginem "admin" i hasłem "admin" to z tą bazą danych ma się połączyć. Dlatego te dane muszą zostać wpisane w programie ręcznie ! Skoro zostaną wpisane ręcznie to użytkownik będzie je znał - i być może to wykorzysta logując się do phpmyadmin. Zatem czy jest sposób, aby stworzyć konto z uprawnieniami, które ma dostęp do odpowiednich tabel w bazie danych, ale nie może logować się do phpmyadmin ? Cytat Co to za aplikacja, że ty przekazujesz userowi dane do bazy? W normalnej aplikacji co najwyżej możesz userowi utworzyć konto do aplikacji (nie do bazy) i mu te dane do aplikacji (nie do bazy) przekazać. Program będzie podzielony na dwie części : program administratora (tutaj nie martwię się o dostęp do bazy danych), oraz program pracownika. Program pracownika może być uruchomiony na wielu maszynach jednocześnie. Nie są to aplikacje działające w przeglądarce, ale oddzielne programy (wykonane w C#). Te dwa programy (pracownika i administratora) nie komunikują się ze sobą bezpośrednio, ale przez bazę danych mysql. W jaki sposób chciałbyś zrealizować połączenie z bazą danych bez podania informacji umożliwiających dostęp do tej bazy danych ? Oczywiście mółbym login i hasło do bazy zaszyć w programie - ale tylko gdybym od samego początku (na etapie tworzenia programu) wiedział, że będzie wykorzystywana baza danych o nazwie "....", z uzytkownikiem "...." i loginem "....". Jednak te informacje ulegają zmianie - trzeba je wpisać ręcznie. |
|
|
|
przemek89k Nadanie uprawnień na rekordy - MYSQL 13.06.2012, 14:51:10
nospor Cytatale bezpośrednio zalogować się do PhpMyAdmin.... 13.06.2012, 15:24:42
przemek89k Tylko, że program korzysta z bazy danych mysql zew... 13.06.2012, 15:45:48
nospor No ale skoro użytkownik sam podaje dane do bazy i ... 13.06.2012, 16:06:28
przemek89k Tylko, że użytkownik ma dostęp do bazy za pomocą p... 13.06.2012, 17:59:59
nospor CytatA gdy teraz on zaloguje się na konto phpmyadm... 13.06.2012, 18:02:46
przemek89k CytatPrzecież to on ci podaje dane do bazy więc on... 14.06.2012, 08:22:56
nospor Coś motasz.... najpierw piszesz ze to user sam wpr... 14.06.2012, 08:43:28
trafas To może zrób sobie swoją tabelę z userami w ... 14.06.2012, 09:37:53
nospor CytatOczywiście mółbym login i hasło do bazy zaszy... 14.06.2012, 09:38:32
bpskiba Mam wrażenie, że przemkowi chodzi o szerszy temat ... 14.06.2012, 15:48:53
Crozin Nie, nie trzyma się danych w postaci zaszyfrowanej... 14.06.2012, 16:41:50 ![]() ![]() |
|
Aktualny czas: 31.12.2025 - 11:20 |