![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie.
Przegladalem caly dzial dotyczacy Postgresa. Otoz borykam sie z tym od kilku dni i jestem w kropce. Przejalem obsluge psql po adminie, ktory korzystal z cgi i c++ do obslugi bazy. Ja natomiast chcialbym troche to zrobic po swojemu no i jest problem. W c++ by polaczyc sie z okreslona baza wykorzystuje sie polecenie mag.connect, po tym okresla sie zmienna user i haslo. Po wpisaniu okreslonego user'a jak i hasla w formularzu logowania nastepuje polaczenie z okreslona baza. (Baza psql posiada zapisanych w "pg_user" okolo 10 uzytkownikow). Z tego co wyczytalem w necie przy php nie ma takiej mozliwosci - musze utworzyc dodatkowa baze uzytkownikow i korzystajac z niej logowac sie do bazy przez www. Czy moje rozumowanie jest prawidlowe, jezeli tak to troche bez sensu tworzyc dodatkowa baze uzytkownikow, jezeli sam psql przechowuje te informacje w swoich zasobach. Pomimo, ze funkcja pg_connect pozwala stosowac zmienne odnosnie uzytkownika i hasla to jednak nie pozwala dostac sie bezposrednio do zapisanych w psql'u uzytkownikow. Prosze o rozwianie moich watpliwosci. Pozdrawiam Jacek ps. klawiatura bez polskich znakow Ten post edytował sbs2005 16.06.2011, 18:24:59 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Źle rozumujecie. Każdy taki użytkownik będzie miał możliwość połączenia się z bazą danych za pomocą dowolnego klienta. Jeśli dodatkowo nie będziesz kontrolował uprawnień tych użytkowników, to będą z tego niezłe "jaja" - za przeproszeniem. Wspomniane jaja będą już nawet wtedy, gdy skontrolujesz uprawnienia tych użytkowników (ograniczając im możliwość wykonywania zapytań do SELECT, UPDATE, INSERT). Załóżmy, że dany użytkownik prowadzi blog (jak i inni użytkownicy). I teraz jeśli on ma możliwość edycji własnego wpisu, to i ma możliwość edycji wpisów innych użytkowników (z poziomu dowolnego klienta), no chyba, że każdemu użytkownikowi będziesz tworzył osobną tabelę (a nawet kilka, czy kilkanaście tabel) lub nawet osobną bazę danych z takimi samymi tabelami, jak w przypadku innych użytkowników i przydzielał mu uprawnienia tylko do tych tabel czy baz danych. W ogóle "kosmos". Daj takiemu użytkownikowi uprawnienie do DELETE i szlag trafi wszystko.
Użytkownicy systemu baz danych (Ci z tabeli pg_user w przypadku PostgreSQL) to tacy, których dane nie powinny być nigdzie ujawnione na poziomie aplikacji (czy to w PHP, czy w C++, czy w czymkolwiek innym). Użytkownicy aplikacji "niejawnie" posługują się danymi użytkownika systemu baz danych (zazwyczaj i tak posiadającego niezbędne minimum uprawnień), aby łączyć się z określoną bazą danych (może ich być więcej) i operować w ramach tylko i wyłącznie tej bazy (tych baz). To co użytkownik może zrobić, zależy od tego jak oprogramujesz obsługę takiego użytkownika we własnej aplikacji. Tabela pg_user powinna być zatem wykorzystywana w aplikacjach służących do zarządzania systemem baz danych PostgreSQL. Obsługę użytkowników danej aplikacji należy zorganizować na poziomie tej aplikacji (np. tabela users w odpowiedniej bazie danych), a nie systemu baz danych. Ten post edytował mortus 17.06.2011, 10:46:47 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tabela pg_user powinna być zatem wykorzystywana w aplikacjach służących do zarządzania systemem baz danych PostgreSQL. Tobie rowniez dziekuje za odpowiedz. Troszeczke opowiem o calym systemie - nie pisalem wczesniej bo to nie bylo przedmiotem dywagacji. Wszyscy uzytkownicy posiadaja odpowiednie uprawnienia na poziomie pg_user wedlug okreslonych kryteriow - kazdy user ma okreslone uprawnienia do poszczegolnych tabel w bazach. Uzytkownik teraz - logujac sie poprzez odczytanie z pg_user informacji i uprawnien do okreslonej tabeli w bazie nie zrobi niczego innego co ma do wykonania - tak to ma dzialac i dziala. System bazodanowy jest systemem w archiwum instytucji - tylko pracownicy jednostki maja dostep do bazy w sieci Intranetowej. Pracownicy dodaja okreslone rekordy do bazy lub wyszukuja informacji tylko i wylacznie wedlug okreslonych uprawnien nadanych do poszczegolnych tabel w bazach - jak juz wspomnialem. Nie ma mozliwosci by user z uprawnieniami "do odczytu" mogl dodac rekord do bazy. Poza tym Panie wiedza co maja robic w swoim zakresie obowiazkow. To nie jest baza do uzytku zewnetrznego - ma za zadanie gromadzic informacje i je przechowywac i to czyni sukcesywnie (w sumie to kilka baz - wiadomo o co chodzi). Chodzi tylko o ten dostep z poziomu PHP do bazy bezposrednio z pg_user - jak to zrobic. Naprawde nie ma mozliwosci.... Jacek Ten post edytował sbs2005 17.06.2011, 11:21:42 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 14:03 |