[pgsql] BLOBy i uprawnienia
yamma - 29-03-2006 00:26
[pgsql] BLOBy i uprawnienia
Witam! Moje pytanie dotyczy sposobu przechowywania BLOBów w postgresie. Mam sobie bazę danych, która przechowuje jakieś zdjęcia. Chciałbym aby część takich zdjęć była dostępna dla wszystkich a część tylko po zalogowaniu. W tym celu tworzę dwie tabelę "tb_all" - dla wszystkich i "tb_logged" - dla zalogowanych oraz dwóch postgresowych użytkowników, dajmy na to: "www" - dla wszystkich i "logged" - dla zalogowanych. Nadaję odpowiednie uprawnienia, a więc "GRANT SELECT ON tb_all TO www" oraz "GRANT SELECT ON tb_logged TO logged". Jak dotąd sprawa jest oczywista: uzytkownik "www" nie będzie miał prawa do przeglądania tabeli "tb_logged". Problem pojawia się gdy chcę przechowywać w bazie BLOBy (zdjęcia). Jedynym sposobem wyświetlenia takich zdjęć na stronie WWW jest odpowiedni skrypt (np. php), któremu podaję oid danego rekordu, który to skrypt jest przypisany do atrybutu SRC znacznika IMG. Skrypt na podstawie numerku "oid" pobiera poprzez funkcję lo_read() odpowiedni obrazek i wypluwa na stronie. Problem polega na tym, że funkcje do obsługi BLOBów w ogóle nie przejmują się uprawnieniami. A przynajmniej ja nic takiego nie znalazłem. Jeśli chcę aby skrypt mogli wykonywać wszyscy, to równie dobrze każdy może obejrzeć sobie dowolny obrazek w bazie, niezależnie od tego, czy jest zalogowany czy nie. Wystarczy, że losowo będzie sobie zmieniał "oid" w URLu. Pytanie: czy gdzieś popełniłem błąd w swoim rozumowaniu czy to jest aż taka dziura? yamma
=?ISO-8859-2?Q?Grzegorz_Prze=BCdziecki?= - 29-03-2006 00:26
Witaj Nie wiem która wersja PostgreSQL'a jest przez ciebie używana ale używanie lo_read() i do tego php to się dawno temu robiło
teraz używaj pola bytea w którym można przechowywać zdjęcia http://www.postgresql.org/docs/8.1/i...pe-binary.html a w manualu do php sobie doczytaj np http://www.php.net/manual/en/functio...cape-bytea.php jak obsługiwać pliki
yamma wrote: > Witam! > Moje pytanie dotyczy sposobu przechowywania BLOBów w postgresie. Mam sobie > bazę danych, która przechowuje jakieś zdjęcia. Chciałbym aby część takich > zdjęć była dostępna dla wszystkich a część tylko po zalogowaniu. W tym celu > tworzę dwie tabelę "tb_all" - dla wszystkich i "tb_logged" - dla > zalogowanych oraz dwóch postgresowych użytkowników, dajmy na to: "www" - dla > wszystkich i "logged" - dla zalogowanych. Nadaję odpowiednie uprawnienia, a > więc "GRANT SELECT ON tb_all TO www" oraz "GRANT SELECT ON tb_logged TO > logged". Jak dotąd sprawa jest oczywista: uzytkownik "www" nie będzie miał > prawa do przeglądania tabeli "tb_logged". Problem pojawia się gdy chcę > przechowywać w bazie BLOBy (zdjęcia). Jedynym sposobem wyświetlenia takich > zdjęć na stronie WWW jest odpowiedni skrypt (np. php), któremu podaję oid > danego rekordu, który to skrypt jest przypisany do atrybutu SRC znacznika > IMG. Skrypt na podstawie numerku "oid" pobiera poprzez funkcję lo_read() > odpowiedni obrazek i wypluwa na stronie. Problem polega na tym, że funkcje > do obsługi BLOBów w ogóle nie przejmują się uprawnieniami. A przynajmniej ja > nic takiego nie znalazłem. Jeśli chcę aby skrypt mogli wykonywać wszyscy, to > równie dobrze każdy może obejrzeć sobie dowolny obrazek w bazie, niezależnie > od tego, czy jest zalogowany czy nie. Wystarczy, że losowo będzie sobie > zmieniał "oid" w URLu. Pytanie: czy gdzieś popełniłem błąd w swoim > rozumowaniu czy to jest aż taka dziura? > yamma > >
yamma - 29-03-2006 00:26
Użytkownik "Grzegorz Przeździecki" <grzegorz@przezdziecki.pl> napisał w wiadomości news:e0b94a$psa$1@atlantis.news.tpi.pl... > Witaj > Nie wiem która wersja PostgreSQL'a jest przez ciebie używana > ale używanie lo_read() i do tego php to się dawno temu robiło > > teraz używaj pola bytea w którym można przechowywać zdjęcia > http://www.postgresql.org/docs/8.1/i...pe-binary.html > a w manualu do php sobie doczytaj > np > http://www.php.net/manual/en/functio...cape-bytea.php > jak obsługiwać pliki
Na szczęście mój ISP ma wersję 7.3.4, więc powinno pójść. Dzięki! yamma
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?=
[pgsql] Akcja w =?iso-8859-2?b?emFsZb9ub7ZjaQ==?= od liczby zmienionych =?iso-8859-1?q?rekord=F3w?=
[sql][pgsql] zapytanie sql
[pgsql] Wykonanie triggera po =?ISO-8859-2?Q?zako=F1czeniu_tra?==?ISO-8859-2?Q?nsakcji?=
[pgsql] =?ISO-8859-2?Q?Prawid=B3owe_post=EApowanie_w_przyp?==?ISO-8859-2?Q?adku_awarii?=
[PGSQL] Funkcje =?ISO-8859-2?Q?zwracaj=B1ce_=27rowset=27_i_?==?ISO-8859-2?Q?tabele_tymczasowe?=
[pgsql] 7.4 =?ISO-8859-2?Q?og=B3upia=B3_przy_zak=B3adaniu_?==?ISO-8859-2?Q?indeksu?=
[pgsql] Zmiana schematu do =?ISO-8859-2?Q?kt=F3rego_nalezy_o?==?ISO-8859-2?Q?biekt=2E?=
Która z baz: [PGSQL] czy [MySQL] będzie lepsza w takim zastosowaniu (masowe UPDATE)
PL/pgSQL jak =?ISO-8859-2?Q?u=BFy=E6_transakcji=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.plautwywalczyl.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|