Flask Academy · Lekcja

Walidacja danych wejściowych przeciwko wstrzyknięciom

Odrzucaj złośliwe ładunki już na wejściu.

Lekcja 4 z 413 kroki

Walidacja danych wejściowych przeciwko wstrzyknięciom to bezpłatna lekcja Flask Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Flask Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Flask Academy zawiera 4 lekcji w sumie.

Nigdy nie ufaj danym wejściowym

Każda wartość wysłana przez klienta może być złośliwa. Traktowanie wszystkich danych wejściowych jako niezaufanych to sposób myślenia, który zapobiega większości ataków.

Znaczenie pojęcia injection

Injection występuje, gdy dane użytkownika są traktowane jak kod lub polecenie. Atakujący przemyca instrukcje do zapytania albo powłoki.

SQL injection w jednym wierszu

Wklejanie danych wejściowych bezpośrednio do SQL to klasyczny błąd. Odpowiednio przygotowana wartość może zmienić zapytanie query i wyświetlić całą tabelę.

db.execute("SELECT * FROM users WHERE name = '" + name + "'")

Używanie zapytań parametryzowanych

Rozwiązaniem jest przekazywanie wartości jako parameters, a nie konkatenowanie ciągów znaków. Sterownik bezpiecznie je wtedy escapuje.

db.execute("SELECT * FROM users WHERE name = ?", (name,))

ORM pomaga

W SQLAlchemy używa się filter_by i wartości powiązanych, dzięki czemu zapytania są domyślnie parametryzowane, a injection staje się znacznie trudniejszy.

User.query.filter_by(name=name).first()

Sprawdzanie kształtu i typu

Przed użyciem sprawdź, czy dane wejściowe odpowiadają oczekiwaniom. Potwierdź type i zakres, aby ciąg znaków nie pojawił się tam, gdzie powinna być liczba.

age = request.args.get("age", type=int)

Allowlist zamiast blocklist

Wskazanie kilku akceptowanych wartości jest lepsze niż śledzenie każdej nieprawidłowej. Allowlist odrzuca wszystko, na co wyraźnie nie zezwolono.

Walidacja za pomocą schematu

Biblioteka schematów, taka jak Marshmallow, sprawdza pola za Ciebie. Zgłasza ValidationError, gdy dane mają nieprawidłowy kształt.

data = UserSchema().load(request.get_json())

Escapowanie danych wyjściowych na potrzeby XSS

Injection może również trafić do HTML. Autoescapowanie w Jinja2 zamienia tekst użytkownika na bezpieczne znaki, dzięki czemu skrypty nie mogą uruchomić się na stronie.

Uważaj na filtr safe

Oznaczenie treści filtrem safe wyłącza escapowanie. Używaj go tylko dla tekstu, któremu w pełni ufasz, nigdy dla nieprzetworzonych danych użytkownika.

Odrzucaj dane wcześnie, na brzegu

Waliduj dane natychmiast po ich otrzymaniu, zanim dotkną logiki aplikacji. Szybkie zakończenie działania (fast) kodem 400 zapobiega rozprzestrzenianiu się nieprawidłowych danych.

Szybkie sprawdzenie

Wybierz technikę zapobiegającą SQL injection.

Podsumowanie

Nauczono się nie ufać danym wejściowym, zapobiegać SQL injection za pomocą zapytań parametryzowanych, walidować dane schematami, stosować allowlisty i escapować dane wyjściowe. To solidna praca nad bezpieczeństwem!

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Walidacja danych wejściowych przeciwko wstrzyknięciom” jest bezpłatna?

Tak — pełny tekst „Walidacja danych wejściowych przeciwko wstrzyknięciom” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Flask Academy, przejdź na CoddyKit PRO. Kurs Flask Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Walidacja danych wejściowych przeciwko wstrzyknięciom”?

Odrzucaj złośliwe ładunki już na wejściu. Ćwiczysz Flask Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Flask Academy?

Nie wymagamy żadnego doświadczenia. Flask Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Walidacja danych wejściowych przeciwko wstrzyknięciom”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Flask Academy?

Tak. Każda lekcja Flask Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Ograniczanie liczby żądań za pomocą Flask-Limiter
  2. Konfiguracja CORS dla klientów przeglądarkowych
  3. Nagłówki bezpieczeństwa i HTTPS
  4. Walidacja danych wejściowych przeciwko wstrzyknięciom
← Powrót do Flask Academy