Badania wykazały, że kod generowany przez AI jest 1,7x bardziej podatny na poważne problemy i 2,74x bardziej narażony na luki bezpieczeństwa niż kod napisany przez człowieka. Jeśli cokolwiek zbudowałeś za pomocą Cursor, Claude Code lub GitHub Copilot, twój projekt prawdopodobnie ma co najmniej jedną z pięciu najczęstszych luk bezpieczeństwa. Oto co to są i jak je znaleźć.

Szybkie fakty
  • 45% kodu generowanego przez AI zawiera co najmniej jedną lukę bezpieczeństwa
  • 1,7x bardziej podatny na poważne problemy w porównaniu z kodem napisanym przez człowieka
  • 2,74x bardziej narażony na luki bezpieczeństwa
  • Najczęstsze: Zakodowane klucze API, brak walidacji danych wejściowych, brak bezpieczeństwa na poziomie wiersza
  • Czas audytu: 2-3 godziny dla typowego projektu vibe-coded
  • Ostatnia weryfikacja: Kwiecień 2026

Dlaczego kod AI jest podatny

Narzędzia do kodowania AI optymalizują pod kątem „czy to działa?" a nie „czy to bezpieczne?" Kiedy poprosisz Cursor o „dodaj uwierzytelnianie użytkownika", generuje kod, który uwierzytelnia użytkowników. Nie dodaje automatycznie limitowania liczby żądań, sanityzacji danych wejściowych, ochrony CSRF ani bezpiecznego zarządzania sesjami — ponieważ nie poprosiłeś o te rzeczy.

AI pisze dokładnie to, co opisujesz. Bezpieczeństwo wymaga opisania rzeczy, o których naturalnie nie myślisz — przypadki graniczne, złośliwe dane wejściowe, wzorce nieautoryzowanego dostępu. Jeśli tego nie ma w twoim poleceniu, nie będzie w twoim kodzie.

5 najczęstszych luk bezpieczeństwa

1. Klucze API zakodowane w kodzie frontendu. AI często umieszcza klucze API bezpośrednio w komponentach JavaScript lub React po stronie klienta. Każdy może otworzyć DevTools przeglądarki i je zobaczyć. Naprawienie: Przenieś wszystkie klucze do zmiennych środowiskowych (pliki .env) i uzyskaj do nich dostęp tylko po stronie serwera. Czas: 15 minut.

2. Brak zabezpieczeń na poziomie wiersza w bazach danych. Jeśli używasz Supabase (powszechne w vibe coding), kod generowany przez AI często daje każdemu uwierzytelnionemu użytkownikowi dostęp do danych każdego innego użytkownika. Naprawienie: Włącz Row Level Security i dodaj zasady dla każdego użytkownika. Czas: 30 minut.

3. Brak walidacji danych wejściowych po stronie serwera. Formularze przyjmują cokolwiek — skrypty, przeładowane ładunki, próby wstrzykiwania SQL. AI dodaje walidację po stronie klienta (którą użytkownicy mogą obejść), ale pomija walidację po stronie serwera. Naprawienie: Dodaj schematy Zod lub podobną walidację na każdym endpoincie API. Czas: 30 minut na endpoint.

4. Brak limitowania liczby żądań. Każdy może uderzyć w twój API 1000 razy na sekundę. Brak ograniczenia szybkości, brak ochrony przed nadużyciami. Naprawienie: Dodaj limitowanie liczby żądań poprzez Upstash Redis lub podobne. Czas: 20 minut.

5. Niechronione trasy. Strony pulpitu, panele administracyjne i endpointy danych użytkownika ładują się bez sprawdzenia, czy użytkownik jest zalogowany. Naprawienie: Dodaj middleware uwierzytelniającego do każdej chronionej trasy. Czas: 15 minut.

Czerpiesz wartość z tego? Publikujemy przewodniki bezpieczeństwa dla projektów budowanych AI co tydzień. Dołącz do czytelników, którzy budują bezpiecznie →

Jak audytować swój projekt

Przejdź przez tę listę kontrolną dla każdego projektu zbudowanego za pomocą narzędzi do kodowania AI:

Wyszukaj w całej bazie kodu zakodowane klucze. Uruchom: grep -r "sk-" . && grep -r "api_key" . && grep -r "secret" . w katalogu projektu. Każde dopasowanie w plikach frontendu to krytyczna luka bezpieczeństwa.

Sprawdź każdy endpoint API pod kątem walidacji danych wejściowych. Otwórz każdy plik trasy API. Jeśli bezpośrednio używa req.body bez walidacji, jest podatny.

Zweryfikuj bezpieczeństwo bazy danych. Jeśli używasz Supabase, sprawdź kartę Uwierzytelnianie → Zasady. Jeśli nie ma zasad RLS, każdy użytkownik może zobaczyć dane każdego innego użytkownika.

Przetestuj uwierzytelnianie na każdej stronie. Otwórz przeglądarkę w trybie incognito (bez logowania) i przejdź do każdej strony w aplikacji. Jeśli jakakolwiek strona pulpitu lub strona specyficzna dla użytkownika się załaduje, ta trasa nie jest chroniona.

Sprawdź limitowanie liczby żądań. Spróbuj uderzyć w endpoint API 100 razy szybko za pomocą prostego skryptu. Jeśli wszystkie 100 żądań się powiedzie, nie masz limitowania liczby żądań.

Aby uzyskać pełną listę kontrolną bezpieczeństwa, zobacz nasz pełny przewodnik zabezpieczania aplikacji vibe-coded. Aby poznać najczęstsze błędy i ich naprawę, przeczytaj 5 błędów bezpieczeństwa, których dopuszcza się każdy vibe coder.

Zmiana podejścia

AI pisze kod, który działa. Ty musisz upewnić się, że kod jest bezpieczny. To dwie różne umiejętności. Każde polecenie do narzędzia do kodowania AI powinno zawierać wymagania bezpieczeństwa obok wymagań funkcjonalnych. „Dodaj uwierzytelnianie użytkownika z limitowaniem liczby żądań, walidacją danych wejściowych i chronionymi trasami" tworzy dramatycznie bezpieczniejszy kod niż „dodaj uwierzytelnianie użytkownika".

Nasz Optymalizator Poleceń może pomóc ci automatycznie dodawać te specyfikacje bezpieczeństwa do każdego polecenia do kodowania.

To jest to, co robimy co tydzień. Jedno głębokie zagłębienie się w narzędzia AI, przepływy pracy i szczere opinie — bez szumu, bez wypełniaczy. Dołącz do nas →

Ujawnienie: Niektóre łącza w tym artykule to linki afiliacyjne. Polecamy tylko narzędzia, które osobiście testowaliśmy i regularnie używamy. Zobacz naszą pełną politykę ujawniania.