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ę.