Zabezpieczenie bazy przed zniszczeniami w wyniku włamania

Odpowiedz Nowy wątek
2020-07-24 10:57
Moderator Kariera

Rejestracja: 2 lata temu

Ostatnio: 34 minuty temu

Lokalizacja: Poznań

3

Zainspirowany tym wątkiem - Czy trzymanie Id na froncie jest dobrą praktyką? zacząłem się zastanawiać, jakie znacie i stosujecie sposoby zabezpieczeń bazy przed zniszczeniami. I nie chodzi mi o blokowanie działań w stylu SQL injection, tylko raczej co w sytuacji, jeśli będzie jakaś dziura i przykładowo komuś uda się jakieś zapytanie podrzucić.

Takim konkretnym impulsem był ten post - https://4programmers.net/Forum/1696296. Bo o ile ukrycie ID danego usera problem z dostępem do tego konkretnego pacjenta rozwiązuje, ale nie zabezpiecza nas to przed wstawieniem WHERE 1=1. Doszedłem do wniosku, że chyba najlepiej jest zablokować loginom/rolom/użytkownikom SQL którzy się łączą z bazą wszystkie operacje typu DELETE, DROP itp i stworzyć jakieś procedury w bazie, które będą odpowiadać za wykonywanie operacji zapisu. Jak nie podasz wprost ID (albo nie spełnisz jakiegoś innego wymogu zabezpieczającego), to nic się nie wykona. Poszukałem w necie i wygląda na to, że ktoś wpadł na to już przede mną :D - chociażby https://stackoverflow.com/que[...]hat-dont-use-named-parameters.

Tylko nie wiem, czy to ma sens, a może jest przysłowiową armatą na komara. Czy takie coś nie zabije bazy?

Pytanie - co Wy o tym sądzicie? Jakie stosujecie rozwiązania/patenty?


Naczelny forumowy hejter Apple

That game of life is hard to play, I'm gonna lose it anyway
The losing card I'll someday lay, So this is all I have to say

Pozostało 580 znaków

2020-07-28 09:17
Moderator Kariera

Rejestracja: 2 lata temu

Ostatnio: 34 minuty temu

Lokalizacja: Poznań

1

No to pytanie do pozostałych zawodników - czy ktoś z Was ma wiedze w tym temacie i może napisać, czy się da coś takiego zrobić (jeśli tak, to na jakiej bazie i w jaki sposób) albo niech napisze, że nie ma takiej opcji.


Naczelny forumowy hejter Apple

That game of life is hard to play, I'm gonna lose it anyway
The losing card I'll someday lay, So this is all I have to say

Pozostało 580 znaków

var
2020-07-28 09:18
var

Rejestracja: 2 lata temu

Ostatnio: 2 minuty temu

Lokalizacja: Wrocław

2

Jeśli nie ma takiego uprawnienia to można to obejść i stworzyć trigger, który wywali błąd w momencie kiedy ktoś będzie chciał wykonać drop. Trigger może być wyłaczany i włączany ponownie.

Ja bym jednak postawił na porządny backup. Jeśli zakładasz że ktoś wbije się na serwer to trzeba założyć że może zrobić tam wszystko

edytowany 1x, ostatnio: var, 2020-07-28 09:19
A na jakiej bazie można zrobić trigger na drop? - Tomek Pycia 2020-07-28 09:19
SQLServer - doczytałem jednak że to nie można zabezpieczyć przed samym dropem, ale można zrobić trigger który automatycznie wykona rollback transakcji w której ten drop był wykonany - var 2020-07-28 09:24

Pozostało 580 znaków

2020-07-31 23:25

Rejestracja: 17 lat temu

Ostatnio: 7 minut temu

1

Triggery DDL a SQL Server https://www.sqlservertutorial[...]ggers/sql-server-ddl-trigger/

Można literanie zabronić dropa tabeli (https://docs.microsoft.com/en[...]SDN&view=sql-server-ver15)

sam drop bazy może wykonać tylko członek grupe sysadmin i dbcreator, ale to raczej nie daje się pierwszemu lepszemu userowi

A coś dla Postgresa a nie M$ też masz? - cerrato 2020-08-01 00:33
Nie mam, postgresa obserwuje hobbystycznie... Może @Marcin.Miga coś wie.. - Panczo 2020-08-01 00:52
Create event triggers. W dokumentacji jest nawet przykład jak zablokować DROP - Marcin.Miga 2020-08-01 15:29

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0