Django Academy · Lekcja

Zabezpieczenia przed XSS, CSRF i SQL Injection

Prawidłowe korzystanie z zabezpieczeń Django

Lekcja 3 z 413 kroki

Zabezpieczenia przed XSS, CSRF i SQL Injection to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 3 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 Django Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Django Academy zawiera 4 lekcji w sumie.

Trzy najgroźniejsze ataki na witryny

Większość włamań do witryn wynika z trzech klasycznych zagrożeń: XSS, CSRF i SQL injection. Dobra wiadomość jest taka, że Django chroni przed wszystkimi trzema, gdy korzysta się z niego w standardowy sposób. 🛡️

Czym jest XSS

XSS występuje, gdy tekst dostarczony przez atakującego zostaje wyświetlony jako działający HTML lub skrypt w przeglądarce innego użytkownika, co pozwala wykraść dane lub przejąć stronę.

Szablony automatycznie zabezpieczają dane

Silnik szablonów Django automatycznie ucieka zmienne, zamieniając niebezpieczne znaki na bezpieczne encje. Skrypt w danych użytkownika zostaje wyświetlony jako nieszkodliwy tekst, a nie wykonany kod.

<p>{{ user_comment }}</p>

Nie wyłączaj uciekania znaków

Filtr safe oraz mark_safe wyłączają uciekanie znaków. Należy używać ich wyłącznie dla treści, którym w pełni Państwo ufają, inaczej samodzielnie otwierają Państwo drogę dla XSS.

{{ user_comment|safe }}

Czym jest CSRF

CSRF nakłania przeglądarkę zalogowanego użytkownika do wysłania ukrytego żądania do witryny i wykonania działania, którego użytkownik nie zamierzał wykonać, na przykład zmiany hasła.

Token CSRF

Django blokuje to zagrożenie za pomocą tajnego tokenu CSRF powiązanego z każdą sesją. Sfałszowany formularz z innej witryny nie może zawierać prawidłowego tokenu, dlatego żądanie POST zostaje odrzucone.

Dodawanie tokenu do formularzy

Należy umieścić tag csrf_token wewnątrz każdego formularza POST. Django automatycznie wstawia ukryte pole i weryfikuje je podczas wysyłania formularza.

<form method="post">{% csrf_token %}
  ...
</form>

Czym jest SQL injection

SQL injection polega na przemyceniu złośliwego kodu SQL do zapytania za pośrednictwem danych użytkownika, co pozwala atakującemu odczytywać, zmieniać lub usuwać dane, do których nie powinien mieć dostępu.

ORM zapewnia ochronę

Korzystanie z ORM domyślnie zapewnia bezpieczeństwo. ORM parametryzuje wartości, dzięki czemu dane użytkownika są traktowane jako dane, a nie wykonywalny SQL.

Article.objects.filter(title=user_input)

Parametryzowanie surowego SQL

Jeśli muszą Państwo napisać surowy SQL, nigdy nie należy doklejać danych do ciągu znaków. Wartości trzeba przekazywać jako parametry, aby sterownik bezpiecznie je zabezpieczył.

Article.objects.raw("SELECT * FROM blog_article WHERE id = %s", [pk])

Dodawanie Content Security Policy

W ramach dodatkowej ochrony przed XSS Content Security Policy informuje przeglądarki, które skrypty mogą być uruchamiane. Ogranicza szkody nawet wtedy, gdy niebezpieczny znacznik przedostanie się do aplikacji.

Szybkie sprawdzenie

Jedno pytanie o to, jak Django blokuje te ataki.

Podsumowanie: domyślne ustawienia są sprzymierzeńcem

Automatyczne uciekanie w szablonach, token CSRF i parametryzowany ORM blokują XSS, CSRF oraz SQL injection. Należy pozostać przy ustawieniach domyślnych, aby zachować bezpieczeństwo. 🙌

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 „Zabezpieczenia przed XSS, CSRF i SQL Injection” jest bezpłatna?

Tak — pełny tekst „Zabezpieczenia przed XSS, CSRF i SQL Injection” 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 Django Academy, przejdź na CoddyKit PRO. Kurs Django Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zabezpieczenia przed XSS, CSRF i SQL Injection”?

Prawidłowe korzystanie z zabezpieczeń Django Ćwiczysz Django 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ąć Django Academy?

Nie wymagamy żadnego doświadczenia. Django 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 3 z 4.

Ile czasu zajmuje lekcja „Zabezpieczenia przed XSS, CSRF i SQL Injection”?

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 Django Academy?

Tak. Każda lekcja Django 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. DEBUG, SECRET_KEY i ALLOWED_HOSTS
  2. HTTPS, HSTS i bezpieczne Cookies
  3. Zabezpieczenia przed XSS, CSRF i SQL Injection
  4. Przeprowadzanie listy kontrolnej wdrożenia
← Powrót do Django Academy