Badania wykazały, że kod generowany przez AI jest 1,7x bardziej narażony na poważne problemy i 2,74x bardziej podatny na luki bezpieczeństwa niż kod napisany przez człowieka. Jeśli cokolwiek stworzyłeś za pomocą Cursor, Claude Code lub GitHub Copilot, Twój projekt prawdopodobnie ma co najmniej jedną z pięciu najpopularniejszych 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 narażony na poważne problemy w porównaniu z kodem napisanym przez człowieka
  • 2,74x bardziej podatny na luki bezpieczeństwa
  • Najpopularniejsze: Hardkodowane 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ą dla "czy to działa?" a nie "czy jest bezpieczne?" Gdy poprosisz Cursor o "dodaj uwierzytelnianie użytkownika", generuje kod, który uwierzytelnia użytkowników. Nie dodaje automatycznie ograniczenia szybkości, sanityzacji danych wejściowych, ochrony CSRF ani bezpiecznego zarządzania sesją — 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 brzegowe, złośliwe dane wejściowe, wzorce nieautoryzowanego dostępu. Jeśli tego nie ma w Twoim promptie, to nie będzie w Twoim kodzie.

5 najpopularniejszych luk bezpieczeństwa

1. Klucze API hardkodowane 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ć. Rozwiązanie: Przenieś wszystkie klucze do zmiennych środowiskowych (pliki .env) i uzyskaj dostęp do nich tylko po stronie serwera. Czas: 15 minut.

2. Brak bezpieczeństwa na poziomie wiersza w bazach danych. Jeśli używasz Supabase (popularne w vibe codingu), kod generowany przez AI często daje każdemu uwierzytelnionemu użytkownikowi dostęp do danych każdego innego użytkownika. Rozwiązanie: Włącz Row Level Security i dodaj zasady dla poszczególnych użytkowników. Czas: 30 minut.

3. Brak walidacji danych wejściowych po stronie serwera. Formularze akceptują cokolwiek — skrypty, przesadnie duże ładunki, próby SQL injection. AI dodaje walidację po stronie klienta (którą użytkownicy mogą ominąć), ale pomija walidację po stronie serwera. Rozwiązanie: Dodaj schematy Zod lub podobną walidację do każdego punktu końcowego API. Czas: 30 minut na punkt końcowy.

4. Brak ograniczenia szybkości. Każdy może uderzyć w Twoje API 1000 razy na sekundę. Brak ograniczania, brak ochrony przed nadużyciami. Rozwiązanie: Dodaj ograniczenie szybkości za pośrednictwem Upstash Redis lub podobnego. Czas: 20 minut.

5. Niezabezpieczone trasy. Strony pulpitu nawigacyjnego, panele administratora i punkty końcowe danych użytkownika są ładowane bez sprawdzania, czy użytkownik jest zalogowany. Rozwiązanie: Dodaj middleware uwierzytelniającego do każdej chronionej trasy. Czas: 15 minut.

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

Jak dokonać audytu projektu

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

Przeszukaj całą bazę kodu w poszukiwaniu hardkodowanych kluczy. Uruchom: grep -r "sk-" . && grep -r "api_key" . && grep -r "secret" . w katalogu projektu. Dowolne wyniki w plikach frontendu to krytyczne luki bezpieczeństwa.

Sprawdź każdy punkt końcowy 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ę Authentication → Policies. 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 nawigacyjnego lub specyficzna dla użytkownika się załaduje, ta trasa jest niezabezpieczona.

Sprawdź ograniczenie szybkości. Spróbuj uderzyć w punkt końcowy API 100 razy w szybkim następstwie, używając prostego skryptu. Jeśli wszystkie 100 się powiedzie, nie masz ograniczenia szybkości.

Aby uzyskać pełną listę kontrolną bezpieczeństwa, zapoznaj się z naszym pełnym przewodnikiem do zabezpieczania aplikacji vibe-coded. Aby poznać najbardziej popularne błędy i ich rozwiązania, przeczytaj 5 błędów bezpieczeństwa, które popełnia każdy vibe coder.

Zmiana podejścia

AI pisze kod, który działa. Ty musisz zapewnić, że kod jest bezpieczny. To są dwie różne umiejętności. Każdy prompt do narzędzia do kodowania AI powinien zawierać wymagania dotyczące bezpieczeństwa obok wymagań funkcjonalnych. "Dodaj uwierzytelnianie użytkownika z ograniczeniem szybkości, walidacją danych wejściowych i chronionymi trasami" produkuje znacznie bezpieczniejszy kod niż "dodaj uwierzytelnianie użytkownika."

Nasz Prompt Optimizer może pomóc Ci automatycznie dodać te specyfikacje bezpieczeństwa do dowolnego prompt do kodowania.

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

Oświadczenie: Niektóre linki w tym artykule to linki partnerskie. Rekomendujemy tylko narzędzia, które osobiście testowaliśmy i regularnie używamy. Zapoznaj się z naszą pełną polityką ujawniania.