[PostgreSQL] zabezpieczenie bazy przed userem
=?iso-8859-2?Q?Bart=B3omiej_Bochi=F1ski?= - 28-07-2007 00:01
[PostgreSQL] zabezpieczenie bazy przed userem
Oczywiście chodzi o obronę przed SQL Injection.
Chcę zablokować userowi takie polecenia jak DROP, UNION, INTERSECT, których naturalnie nie wykorzystuje w aplikacji (php).
Można to jakoś zrobić?
W psql nie widzę takiej opcji, a przejrzałem manual: http://img69.imageshack.us/img69/870...stgrsqlra1.jpg
W zasadzie wydawało mi się, że potencjalny haker nie przebije się przez moją aplikację, ale co raz to dowiaduje się o czymś nowym. Aktualnie o różnych "bajtach", m.in o null, które mogą dużo namieszać. -- Bartłomiej
=?ISO-8859-2?Q?Rafa=B3_Korszu=F1?= - 28-07-2007 00:01
Bartłomiej Bochiński napisał(a): > Oczywiście chodzi o obronę przed SQL Injection. > > Chcę zablokować userowi takie polecenia jak DROP, UNION, INTERSECT, których > naturalnie nie wykorzystuje w aplikacji (php). >
nie możesz kontrolować zapytań z poziomu aplikacji ??
Rafał -- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
=?iso-8859-2?Q?Bart=B3omiej_Bochi=F1ski?= - 28-07-2007 00:01
Dnia 27 Jul 2007 16:36:19 +0200, Rafał Korszuń napisał(a):
> Bartłomiej Bochiński napisał(a): >> Oczywiście chodzi o obronę przed SQL Injection. >> >> Chcę zablokować userowi takie polecenia jak DROP, UNION, INTERSECT, których >> naturalnie nie wykorzystuje w aplikacji (php). >> > > nie możesz kontrolować zapytań z poziomu aplikacji ?? > > Rafał
Tak robie, ale zawsze lepiej sie zabezpieczac podwojnie :) -- Bartłomiej
hubert depesz lubaczewski - 28-07-2007 00:01
Dnia 27.07.2007 Bartłomiej Bochiński <adresik@gmail.com> napisał/a: > Można to jakoś zrobić?
tego o co prosisz - nie. ale można trywialnie zabezpieczyć się inaczej: odebrać prawa userowi do dostępu do tabel i cały dostęp dać przez wydzielone funkcje/widoki które będą zwracały to co trzeba.
ale w/g mnie to jest bzdura.
zabezpiecznie przez sql-injection to nie jest jakaś wielka sztuka. stosujesz po prostu placeholdery albo pg_escape_string i po sprawie.
depesz
-- quicksil1er: "postgres is excellent, but like any DB it requires a highly paid DBA. here's my CV!" :) http://www.depesz.com/ - blog dla ciebie (i moje CV)
Piotr 'piter' Hlawski - 28-07-2007 00:01
hubert depesz lubaczewski wrote:
> Dnia 27.07.2007 Bartłomiej Bochiński <adresik@gmail.com> napisał/a: >> Można to jakoś zrobić? > > tego o co prosisz - nie. > ale można trywialnie zabezpieczyć się inaczej: > odebrać prawa userowi do dostępu do tabel i cały dostęp dać przez > wydzielone funkcje/widoki które będą zwracały to co trzeba. > > ale w/g mnie to jest bzdura. > > zabezpiecznie przez sql-injection to nie jest jakaś wielka sztuka. > stosujesz po prostu placeholdery albo pg_escape_string i po sprawie.
W przypadku PHP warto używać PDO --- podnosi to znacznie bezpieczeństwo.
-- ..:: Piter // phlawski$gmail,com // gg: 4534287 ::. Chuck Norris nigdy w życiu nie mrugnął. Nigdy.
=?iso-8859-2?Q?Bart=B3omiej_Bochi=F1ski?= - 28-07-2007 00:01
Dnia Fri, 27 Jul 2007 17:25:06 +0200, hubert depesz lubaczewski napisał(a):
> Dnia 27.07.2007 Bartłomiej Bochiński <adresik@gmail.com> napisał/a: >> Można to jakoś zrobić? > > tego o co prosisz - nie. > ale można trywialnie zabezpieczyć się inaczej: > odebrać prawa userowi do dostępu do tabel i cały dostęp dać przez > wydzielone funkcje/widoki które będą zwracały to co trzeba. > > ale w/g mnie to jest bzdura. > > zabezpiecznie przez sql-injection to nie jest jakaś wielka sztuka. > stosujesz po prostu placeholdery albo pg_escape_string i po sprawie. > > depesz
Otoz nie zgodze sie. Samo pg_escape_string nie jest wystarczajace.
Tutaj przykład z MySQLem http://hacking.pl/data/hackme.pdf Nie uzyto zadnego średnika, cudzyslowiu itp. Wiadomo, że normalnie kazdy by to zrzutowal na inta i po sprawie.
Zeby to bylo takie proste, ze wystarczy uzyc pg_escape_string to bysmy nie dostawali tyle spamu :) Tak nasze adresy sa zdobywane. (tak, wiem, ze mam adres w sygnaturce :p)
> tego o co prosisz - nie.
akurat wymyslilem rozwiazanie na unikniecie DROP, ale abrdzo niewygodne. Ustawiamy wlasciciela bazy jako innego uzytkownika, a naszemu nadajemu prawa do SELECT, UPDATE itp.
Z Union nie moge nic wykombinowac, a przeciez jak mi user wpisze "european union" to mu nie zmienie (np. lokalizacji) na european u n i o n :)
-- Bartłomiej
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 28-07-2007 00:01
Bartłomiej Bochiński wrote: > Dnia Fri, 27 Jul 2007 17:25:06 +0200, hubert depesz lubaczewski napisał(a): > >> Dnia 27.07.2007 Bartłomiej Bochiński <adresik@gmail.com> napisał/a: >>> Można to jakoś zrobić? >> tego o co prosisz - nie. >> ale można trywialnie zabezpieczyć się inaczej: >> odebrać prawa userowi do dostępu do tabel i cały dostęp dać przez >> wydzielone funkcje/widoki które będą zwracały to co trzeba. >> >> ale w/g mnie to jest bzdura. >> >> zabezpiecznie przez sql-injection to nie jest jakaś wielka sztuka. >> stosujesz po prostu placeholdery albo pg_escape_string i po sprawie. >> >> depesz > > Otoz nie zgodze sie. Samo pg_escape_string nie jest wystarczajace. > > Tutaj przykład z MySQLem http://hacking.pl/data/hackme.pdf Nie uzyto > zadnego średnika, cudzyslowiu itp. Wiadomo, że normalnie kazdy by to > zrzutowal na inta i po sprawie.
Ale pg_escape_string stosuje się po to, żeby kod SQL nie "wyskoczył" z fiutków. Jak masz kod: ... = '$zmienna', to jak ją potraktujesz pg_escape_string to już włamujący sie nic nie poradzi.
-- P.M.
=?iso-8859-2?Q?Bart=B3omiej_Bochi=F1ski?= - 28-07-2007 00:01
Dnia Fri, 27 Jul 2007 20:08:44 +0200, Paweł Matejski napisał(a):
> Bartłomiej Bochiński wrote: >> Dnia Fri, 27 Jul 2007 17:25:06 +0200, hubert depesz lubaczewski napisał(a): >> >>> Dnia 27.07.2007 Bartłomiej Bochiński <adresik@gmail.com> napisał/a: >>>> Można to jakoś zrobić? >>> tego o co prosisz - nie. >>> ale można trywialnie zabezpieczyć się inaczej: >>> odebrać prawa userowi do dostępu do tabel i cały dostęp dać przez >>> wydzielone funkcje/widoki które będą zwracały to co trzeba. >>> >>> ale w/g mnie to jest bzdura. >>> >>> zabezpiecznie przez sql-injection to nie jest jakaś wielka sztuka. >>> stosujesz po prostu placeholdery albo pg_escape_string i po sprawie. >>> >>> depesz >> >> Otoz nie zgodze sie. Samo pg_escape_string nie jest wystarczajace. >> >> Tutaj przykład z MySQLem http://hacking.pl/data/hackme.pdf Nie uzyto >> zadnego średnika, cudzyslowiu itp. Wiadomo, że normalnie kazdy by to >> zrzutowal na inta i po sprawie. > > Ale pg_escape_string stosuje się po to, żeby kod SQL nie "wyskoczył" z fiutków. > Jak masz kod: ... = '$zmienna', to jak ją potraktujesz pg_escape_string to już > włamujący sie nic nie poradzi.
$zmienna = admin char(39) or 1=1 --
to faktycznie nie dziala. a na pewno nie ma czegos innego co zastapi fiutka?
-- Bartłomiej
ethanak - 29-07-2007 00:00
On 2007-07-27 21:54, Bartłomiej Bochiński wrote: > [...] a na pewno nie ma czegos innego co zastapi > fiutka? > Wibrator? :)
ethanak PS. MSPANC -- mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20='); standard error codes: ENOTOBACCO //pipe exhausted
=?iso-8859-2?Q?Bart=B3omiej_Bochi=F1ski?= - 30-07-2007 00:01
Nie otwieram nowego tematu, ale zapytam o cos nowego tutaj. Czy zmiana kolumn na inne o trudnych do zgadniecia nazwach jest dobrym pomyslem? Czy moze to utrudnic atak?
Np. email na email_zgaduj_zgadula to dobry pomysl?
Mam nadzieje, ze nie popadam w paranoje, ale w opisach atakow zawsze widuje, ze trzeba zgadnac nazwe kolumny.
-- Bartłomiej
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
=?ISO-8859-2?Q?[psql]_Polskie_t=B3umaczenie_?= =?ISO-8859-2?Q?licencji_BSD_dla_PostgreSQL=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.pllunadance.htw.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 |
|