Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Znikające dane z tabeli w bazie danych
-Gość-
post 21.11.2013, 19:25:07
Post #1





Goście







Co jakiś czas usuwają mi się wszystkie dane w jednej tabeli w bazie danych (struktura tabeli zostaje, tylko wszystkie dane są opróżniane). Pierwsze co mi przychodzi na myśl, to SQL Injection. Czy można to jakoś sprawdzić? Czy jest możliwość przeanalizowania historii zapytań SQL jakie były wykonywane na danej tabeli (nie wiem, może jakiś istnieje jakiś log przechowujący takie informacje)?
No bo jeżeli nie SQL Injection, to jaki może być inny powód usuwania się danych z tabeli?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Rafał Dudziński
post 22.11.2013, 10:37:43
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


1. Zmień dostępy i zobacz co się będzie działo, sprawdź uprawienia użytkowników do DB
ew.
2. Sprawdź czy jakaś funkcja w projekcie nie wykonuje zapytania truncate lub delete na tej tabeli
3. Sprawdź czy nie ustawiłeś crona na jakiś skrypt
Go to the top of the page
+Quote Post
-Gość-
post 22.11.2013, 12:13:11
Post #3





Goście







ad 1. Na PDO?
ad 2. Nie
ad 3. Nie

W przypadku tej tabeli nie zabezpieczałem się przed SQL Injection - używam tradycyjnego dostępu do bazy danych w PHP, nawet bez wykorzystania żadnych funkcji "filtrujących" zapytania, ponieważ w zapytaniach, które wykonuje na tej tabeli (odczytywanie danych za pomocą SELECT) nie ma żadnych parametrów, które pochodziły by od użytkownika. Czy w takim przypadku SQL Injection na tej tabeli jest w ogóle możliwe? Czy jest to możliwe przez inne, niezabezpieczone zapytania, które dotyczą innych tabel, a zawierają w sobie parametry pochodzące od użytkownika?
Go to the top of the page
+Quote Post
freemp3
post 22.11.2013, 12:24:30
Post #4





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


Cytat
Czy jest to możliwe przez inne, niezabezpieczone zapytania, które dotyczą innych tabel, a zawierają w sobie parametry pochodzące od użytkownika?

Jak najbardziej. Sprawdź wszystkie zapytania do bazy i odpowiednio je zabezpiecz, najlepszym rozwiązaniem będzie użycie PDO.

Dane z tabeli są kasowane w regularnych odstępach czasu czy nie ma żadnej reguły? Możesz przy każdym zapytaniu, w którym są przekazywane jakieś dane od użytkownika dodać mechanizm logów, który by zbierał to co jest podawane oraz jak wygląda wygenerowane zapytanie. Dodatkowo jeśli w którymś z zapytań znajdziesz ciąg znaków delete lub truncate możesz zapisać jakieś dodatkowe informacje np adres ip, zawartość tablic post oraz get itp.


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post
-Gość-
post 22.11.2013, 12:31:24
Post #5





Goście







Cytat(freemp3 @ 22.11.2013, 12:24:30 ) *
Dane z tabeli są kasowane w regularnych odstępach czasu czy nie ma żadnej reguły?


Raczej w nieregularnych i zdarza się to rzadko, tak chyba raz na miesiąc, dwa miesiące.

Cytat(freemp3 @ 22.11.2013, 12:24:30 ) *
Możesz przy każdym zapytaniu, w którym są przekazywane jakieś dane od użytkownika dodać mechanizm logów, który by zbierał to co jest podawane oraz jak wygląda wygenerowane zapytanie. Dodatkowo jeśli w którymś z zapytań znajdziesz ciąg znaków delete lub truncate możesz zapisać jakieś dodatkowe informacje np adres ip, zawartość tablic post oraz get itp.


Czy są do tego jakieś specjalne funkcje MySQL?
A może takie logi zapytań MySQL cały czas istnieją i są gdzieś przechowywane na serwerze, wystarczy tylko je odczytać?
Go to the top of the page
+Quote Post
freemp3
post 22.11.2013, 12:45:13
Post #6





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


Myślałem bardziej o użyciu PHP do tego. Mógłbyś od razu zablokować zapytanie, w którym pojawią się słowa delete lub truncate.

Jeśli chcesz użyć mysql tutaj jest opisane jak można to zrobić:
http://stackoverflow.com/questions/303994/...ueries-in-mysql
http://stackoverflow.com/questions/6479107...mysql-query-log


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post
Rafał Dudziński
post 22.11.2013, 15:59:15
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Możesz ustawić uprawnienia na userów w DB i wyciąć odpowiednie.
Jednak najpierw radził bym przeszukać projekt w poszukiwaniu miejsc gdzie odwołujesz się do tej tabeli.
W większości IDE masz możliwość automatycznego wyszukiwania w całym projekcie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:15