Witajcie moi drodzy forumowicze.
Nadszedł dzień w którym znowu musiałem zasiąść do klawiatury aby zadać .... pytanie. Nie wiem czy mądre, nie wiem czy z sensem ale ....
jak mogę zlokalizować skrypt który np otwiera połączenie z bazą ale go nie zamyka albo czy jest jakaś możliwość zdiagnozowania skąd jakiś użytkownik wysyłą tony zapytań do bazy mysql ?
Napotkałem pewien problem który polega na tym, że coś ... zupełnie nieoczekiwanie zabija mi serwer. W mysql'u show processes pokazuje mi setki otwartych ze statusem sleep.
Podejrzewałem jakiś atak ale z logów nic takiego nie wynika, chyba, że ktoś już zdołał się włamać i z lokalnego atakuje czego też nie mogę w żaden sposób wyśledzić.
Wracając jednak do pytania, czy można określić/znaleźć jeśli to skrypt który albo jakie zapytanie
to robi ?
Pozdrawiam
amator
Update:
Dzisiaj szperając w kodzie znalazłem conajmniej dwie dziury które już załatałem bo deweloper (nie ja) napisał kod w taki sposób, że sql injection .... to pestka.
Nie wykluczone, że jest takich więcej ale nie starczyło dnia, żeby szukać.
Walczę dalej ...
full proceslist pokaże więcej informacji m.in IP skąd przychodzą połączenia do bazy.
Kolejna kwestia to jak napisany jest kod. Jakiś FW czy plain SQL i mysql_* czy coś więcej. W miejscu nawiązywania połączenia do bazy (mysql_connect) dodać logowanie do pliku stacktrace wraz z Server Request i przeszukiwać Będzie tego duuużo ale to jedna ze skuteczniejszych metod.
Ew. sprawdzać jakie zapytania wchodzą. Możesz włączyć slow_log w Mysql ustawiając wartość na 0 (logowanie wszystkich zapytać) a potem takiego slowloga który waży powiedzmy 500MB przemielić przez `pt-query-digest` (albo podpiąć się tym pod processlist)
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)