MariaDB - ochrona przed iniekcją SQL
Prosty akt akceptacji danych wejściowych użytkownika otwiera drzwi do exploitów. Problem wynika przede wszystkim z logicznego zarządzania danymi, ale na szczęście dość łatwo jest uniknąć tych poważnych błędów.
Okazje do wstrzyknięcia SQL zwykle występują, gdy użytkownicy wprowadzają dane, takie jak nazwa, a logika kodu nie analizuje tych danych wejściowych. Kod zamiast tego umożliwia atakującemu wstawienie instrukcji MariaDB, która będzie działać w bazie danych.
Zawsze uwzględniaj dane wprowadzone przez użytkowników, podejrzewaj i wymagają silnej weryfikacji przed jakimkolwiek przetwarzaniem. Przeprowadź tę weryfikację poprzez dopasowanie wzorców. Na przykład, jeśli oczekiwanym wejściem jest nazwa użytkownika, ogranicz wprowadzane znaki do znaków alfanumerycznych i podkreśleń oraz do określonej długości. Przejrzyj przykład podany poniżej -
if(check_match("/^\w{8,20}$/", $_GET['user_name'], $matches)) {
$result = mysql_query("SELECT * FROM system_users WHERE user_name = $matches[0]");
} else {
echo "Invalid username";
}
Skorzystaj również z operatora REGEXP i klauzul LIKE podczas tworzenia ograniczeń wejściowych.
Rozważ wszystkie rodzaje niezbędnej jawnej kontroli danych wejściowych, takie jak -
Kontroluj używane znaki ucieczki.
Kontroluj określone typy danych wejściowych. Ogranicz dane wejściowe do wymaganego typu i rozmiaru danych.
Kontroluj składnię wprowadzanych danych. Nie dopuszczaj niczego poza wymaganym wzorem.
Kontroluj dozwolone warunki. Czarna lista słów kluczowych SQL.
Możesz nie znać niebezpieczeństw związanych z atakami iniekcyjnymi lub uważać je za nieistotne, ale znajdują się one na szczycie listy zagrożeń bezpieczeństwa. Ponadto weź pod uwagę wpływ tych dwóch wpisów -
1=1
-or-
*
Kod pozwalający na wprowadzenie któregokolwiek z nich wraz z odpowiednią komendą może skutkować ujawnieniem wszystkich danych użytkownika w bazie lub usunięciem wszystkich danych w bazie, a żadne z nich nie jest szczególnie sprytne. W niektórych przypadkach napastnicy nie spędzają nawet czasu na badaniu dziur; wykonują ataki na ślepo z prostym wejściem.
Weź również pod uwagę narzędzia do dopasowywania wzorców i wyrażeń regularnych oferowane przez dowolny język programowania / skryptowy w połączeniu z MariaDB, które zapewniają większą kontrolę, a czasem lepszą kontrolę.