Użyj listy kontrolnej bezpieczeństwa Claude Code, aby szybko przeprowadzić konkretne przeglądy uwierzytelniania, walidacji wejścia, obsługi sekretów i powierzchni wstrzyknięć w aplikacjach webowych.

Lekki przegląd bezpieczeństwa to szybka inspekcja (zwykle 30–60 minut) mająca na celu wychwycenie oczywistych, wysokiego priorytetu problemów przed wdrożeniem. To nie jest pełny audyt. Pomyśl o tym jak o szybkiej kontroli bezpieczeństwa: skanujesz te ścieżki, które najczęściej zawodzą w realnych aplikacjach i szukasz dowodów, nie przypuszczeń.
Ta lista kontrolna Claude Code koncentruje się na obszarach, które najczęściej się psują w codziennych aplikacjach webowych:
Nie stara się dowodzić braku błędów, modelować złożonych przeciwników ani zastępować testów penetracyjnych.
„Konkretne ustalenia” oznaczają, że każdy zapisany problem ma dowód, na którym deweloper może od razu działać. Dla każdego ustalenia zanotuj:
AI jest pomocnikiem, nie autorytetem. Używaj go do wyszukiwania, podsumowywania i proponowania testów. Potem zweryfikuj, czytając kod i, jeśli to możliwe, odtwarzając problem prawdziwym żądaniem. Jeśli model nie wskaże konkretnych miejsc i kroków, traktuj twierdzenie jako nieudowodnione.
Szybki przegląd działa tylko wtedy, gdy zawęzisz cel. Zanim poprosisz Claude Code o analizę, zdecyduj, co chcesz dziś udowodnić i czego nie sprawdzasz.
Zacznij od 1–3 rzeczywistych ścieżek użytkownika, gdzie błąd kosztuje pieniądze, ujawnia dane lub daje władzę. Dobrymi kandydatami są logowanie, reset hasła, checkout i ekrany edycji administratora.
Następnie nazwij zasoby, które musisz chronić. Bądź konkretny: konta użytkowników, akcje płatnicze, dane osobowe, operacje tylko dla administratorów.
Potem zapisz założenia dotyczące zagrożeń prostym językiem. Czy bronisz się przed ciekawskim użytkownikiem, atakującym zewnętrznym z automatami, czy insiderem z częściowym dostępem? Odpowiedź zmienia definicję "wystarczająco dobre".
Na koniec zdefiniuj kryteria zaliczenia i niezaliczenia, aby przegląd kończył się ustaleniami, a nie wrażeniami. Proste reguły działają dobrze:
Jeśli nie potrafisz opisać, jak wygląda porażka, zakres jest wciąż zbyt nieostry.
Przegląd działa tylko wtedy, gdy model patrzy we właściwe miejsca. Zbierz mały pakiet kodu i notatek, aby przegląd mógł dać dowody, nie domysły.
Zacznij od udostępnienia ścieżki krytycznej dla bezpieczeństwa: punkty wejścia żądań i kod, który decyduje, kim jest użytkownik i co może robić. Dołącz tylko tyle kodu, ile pokazuje przepływ danych.
Praktyczny pakiet zwykle zawiera:
Dodaj kilka linii notatek środowiskowych, żeby założenia były jawne: sesja vs JWT, gdzie żyją tokeny (ciastko lub nagłówek), zachowanie reverse proxy lub API gateway, kolejki/cron workerzy i wszelkie endpointy „tylko wewnętrzne”.
Zanim zaczniesz szukać błędów, poproś o inwentarz: punkty wejścia, uprzywilejowane endpointy i magazyny danych, do których mają dostęp. To zapobiega pominięciu powierzchni ataku.
Uzgodnij też format wyjściowy, który wymusza konkretne ustalenia. Prosta tabela działa dobrze: Znalezisko, Krytyczność, Dotknięty endpoint/plik, Dowód (dokładny fragment lub zakres linii), Scenariusz eksploatujący, Propozycja naprawy.
Zmieniaj czas na ramy:
Celem nie jest idealne pokrycie. To mała grupa testowalnych ustaleń.
Miej aplikację otwartą podczas czytania. Klikaj w UI i obserwuj, jakie żądania są wysyłane. Notatki powinny wskazywać konkretne endpointy, parametry i źródła danych.
Workflow mieszczący się w jednej sesji:
Przydatny nawyk: dla każdego "wydaje się w porządku" zapisz, co zrobiłbyś, żeby to złamać. Jeśli nie potrafisz opisać próby złamania, prawdopodobnie jej nie zweryfikowałeś.
Uwierzytelnianie to moment, w którym aplikacja decyduje: „to żądanie należy do tej osoby”. Szybki przegląd nie polega na czytaniu każdej linii. Chodzi o znalezienie miejsca, gdzie tożsamość jest ustalana, a następnie sprawdzenie skrótów i ścieżek błędów.
Zlokalizuj granicę zaufania: gdzie tożsamość jest najpierw tworzona lub akceptowana? Może to być ciasteczko sesji, token JWT bearer, klucz API lub mTLS na brzegu. Poproś Claude Code, aby wskazał dokładny plik i funkcję, która zamienia "anonim" na identyfikator użytkownika, i wymienił każdą inną ścieżkę, która może to robić.
Sprawdzenia authn, na które warto zwrócić uwagę:
Praktyczny przykład: jeśli emaile resetujące zwracają "konto nie znalezione", to szybki problem enumeracji. Nawet przy komunikacie ogólnym różnice w czasie odpowiedzi mogą ujawnić ten fakt, więc sprawdź też czasy odpowiedzi.
Autoryzacja to pytanie, które powoduje największe szkody, gdy jest złe: „Czy ten użytkownik może wykonać tę akcję na tym konkretnym zasobie?” Szybki przegląd powinien celowo próbować złamać to założenie.
Zapisz role i uprawnienia prostym językiem. Trzymaj to ludzkie:
Potem potwierdź, że każda wrażliwa akcja wymusza authz po stronie serwera, nie tylko w UI. Przycisk może być ukryty, trasa zablokowana w kliencie, ale atakujący może wywołać API bezpośrednio.
Szybkie skanowanie, które zwykle znajduje realne problemy:
Klasyczny zapach IDOR: żądanie jak GET /projects/{id}, gdzie {id} jest kontrolowane przez użytkownika, a serwer ładuje je bez weryfikacji, czy należy do bieżącego użytkownika lub tenant.
Prompt wymuszający realną odpowiedź:
"Dla tego endpointu pokaż dokładny kod, który decyduje o dostępie, i wypisz konkretne warunki, które pozwoliłyby użytkownikowi z innym orgId uzyskać dostęp. Jeśli żadnych, wyjaśnij dlaczego, podając pliki i nazwy funkcji."
Większość szybkich problemów zaczyna się od luki: aplikacja przyjmuje dane, których programista się nie spodziewał. Traktuj „wejście” jako wszystko, co użytkownik lub inny system może kontrolować, nawet jeśli wydaje się nieszkodliwe.
Zacznij od nazwania wejść dla sprawdzanego endpointu:
Walidacja powinna dziać się blisko miejsca, gdzie dane wchodzą do aplikacji, nie głęboko w logice biznesowej. Sprawdź podstawy: typ (string vs number), maksymalna długość, wymagane vs opcjonalne oraz format (email, UUID, data).
Dla znanych wartości, jak role, statusy czy kierunki sortowania, preferuj allowlistę. Trudniej ją obejść niż "blokować kilka złych wartości".
Sprawdź też obsługę błędów. Gdy aplikacja odrzuca wejście, nie odsyłaj surowej wartości w odpowiedzi, logach ani UI. Tak małe błędy walidacji prowadzą do wycieków danych lub pomagają w atakach wstrzyknięć.
Szybki "plan zły input" dla ryzykownych endpointów (logowanie, wyszukiwanie, upload, akcje admina):
Przykład: parametr sort, który akceptuje dowolny string, może stać się fragmentem SQL. Allowlista jak "date" lub "price" zapobiega tej klasie błędów.
Większość szybkich przeglądów znajduje problemy w tych samych miejscach: wszędzie tam, gdzie wejście użytkownika jest interpretowane jako kod, zapytanie, ścieżka lub URL. Tu szukasz momentów, gdy dane przekraczają granicę zaufania.
Śledź dane od punktów wejścia (query params, nagłówki, ciasteczka, uploady, formularze admina) do miejsc, gdzie kończą:
Szukaj tych wzorców i wymagaj konkretnego miejsca wywołania i przykładu ładunku dla każdego:
ORDER BY i budowniczowie IN (...), które łączą wartości użytkownikaUważaj też na deserializację i wstrzyknięcie szablonów. Wszystko, co parsuje JSON, YAML lub stringi z templatem dostarczane przez użytkownika, może kryć ryzyko, zwłaszcza jeśli wspiera niestandardowe typy, wyrażenia lub renderowanie po stronie serwera.
Jeśli funkcja akceptuje URL, nazwę pliku lub sformatowany tekst, zakładaj, że może być nadużyta, dopóki nie udowodnisz inaczej kodem i testami.
Problemy z sekretami są często głośne, gdy wiesz, gdzie szukać. Skup się na miejscach, gdzie sekrety mieszkają i gdzie przypadkowo są kopiowane.
Typowe miejsca, gdzie pojawiają się sekrety:
Następnie wymuś konkretną odpowiedź: jeśli sekret jest dziś ujawniony, co się stanie? Dobry system ma ścieżkę rotacji (wydanie nowego klucza), unieważniania (wyłączenie starego) i sposób szybkiego redeployu. Jeśli odpowiedź brzmi „zmienimy go później”, traktuj to jako ustalenie.
Zasada najmniejszego przywileju to szybkie zwycięstwo. Incydenty pogarszają się, gdy klucze są nadmiernie uprawnione. Szukaj użytkowników bazy danych, którzy mogą dropować tabele, tokenów stron trzecich, które zarządzają kontami, lub kluczy współdzielonych między środowiskami. Preferuj jeden klucz na usługę, na środowisko, z najmniejszym zestawem uprawnień.
Szybkie prompt-y do wklejenia do Claude Code:
Na koniec potwierdź zabezpieczenia: blokuj sekrety w kontroli źródła (pre-commit/CI), i upewnij się, że backupy czy snapshoty nie zawierają tekstowych poświadczeń. Jeśli platforma wspiera snapshoty i rollback, sprawdź, czy sekrety są wstrzykiwane w czasie działania, a nie zapiekane w obrazach.
Vage prośby dają vage odpowiedzi. Wymuś od modelu zobowiązanie do dowodu: dokładne lokalizacje, ślad, repro, i co mogłoby uczynić twierdzenie nieprawdziwym.
Używaj jednego wzorca naraz, potem poproś o rewizję po potwierdzeniu lub odrzuceniu szczegółu.
Jeśli output dalej jest niejasny, przyciśnij:
"Odpowiedz tylko: ścieżka pliku, nazwa funkcji, ryzykowna linia i jednozdaniowy wpływ."
Endpointy aktualizacji profilu użytkownika często kryją błędy kontroli dostępu. Oto mały przypadek, który możesz przeprowadzić przez tę listę.
Scenariusz: endpoint API aktualizuje profil użytkownika:
PATCH /api/profile?accountId=123 z JSONem jak { "displayName": "Sam" }.
Prosisz Claude Code, żeby znalazł handler, prześledził, jak używany jest accountId, i udowodnił, czy serwer egzekwuje własność.
Co często się pojawia:
accountId z query i aktualizuje to konto bez sprawdzenia, czy należy do zalogowanego użytkownika.displayName jest obcinane, ale accountId nie jest walidowane jako liczba całkowita."... WHERE account_id=" + accountId.Dobre sprawozdanie jest konkretne:
accountId jest zmienione; SQL budowany z niezaufanego inputuaccountId od klienta, używać id uwierzytelnionego użytkownika po stronie serwera; parametryzować zapytanieaccountIdPo poprawce, szybko sprawdź ponownie:
accountId i potwierdź, że kończy się niepowodzeniem.Najszybszy sposób, by przegapić podatność, to ufać temu, co wydaje się egzekwowane w UI. Przycisk ukryty lub wyłączony to nie check uprawnień. Jeśli serwer zaakceptuje żądanie, każdy może je odtworzyć z innym user ID, rolą lub bezpośrednim wywołaniem API.
Innym częstym błędem jest nieostre polecenie. "Zrób przegląd bezpieczeństwa" zwykle daje ogólny raport. Przegląd musi mieć wąski zakres (które endpointy, które role, jakie dane) i ścisły format wyjścia (nazwa pliku, funkcja, ryzykowna linia, minimalne repro).
Ta sama zasada dotyczy wyników AI: nie akceptuj twierdzeń bez wskazania miejsca. Jeśli ustalenie nie zawiera konkretnej lokalizacji w kodzie i kroków do wywołania, traktuj je jako nieudowodnione.
Te pułapki pojawiają się wciąż:
Jeśli łatasz kolejne krawędzie po każdej nowej sytuacji, zatrzymaj się. Naprawa zwykle leży wcześniej i jest prostsza: waliduj wejścia na granicy i uczyń kontrole autoryzacji jawne i scentralizowane, aby każda ścieżka je wykorzystywała.
Te nie zastąpią pełnego przeglądu, ale wychwytują błędy, które wkradają się, gdy wszyscy są zmęczeni. Skup się na tym, co możesz szybko udowodnić: żądanie, które możesz wysłać, stronę, którą możesz załadować, linię w logu, którą możesz znaleźć.
Pięć szybkich kontroli, które zwykle się opłacają:
Zapisz trzy poprawki, które możesz wysłać w tym tygodniu, nie listę życzeń. Przykład: (1) dodać rate limiting do logowania i resetu hasła, (2) wymusić serwerowe sprawdzenie własności na endpointzie "get by id", (3) ograniczyć długość wejść i odrzucać nieoczekiwane znaki dla pola wyszukiwania.
Przegląd opłaci się tylko wtedy, gdy jego wyniki zmienią to, co wysyłacie. Traktuj tę listę jako mały, powtarzalny krok buildowy, a nie jednorazową akcję ratunkową.
Zamień każde ustalenie w zadanie backlogowe, które trudno źle zrozumieć:
Wybierz rytm, który pasuje do ryzyka i wielkości zespołu. Dla wielu zespołów najlepsze jest przy każdym wydaniu. Jeśli wydania są częste, rób 30–60 minutowy przegląd miesięcznie i krótszą kontrolę przed publikacją.
Ułatw powtarzalność, tworząc zestaw promptów i szablon checklisty. Trzymaj prompt-y skoncentrowane na konkretnych wyjściach: pokaż trasę, strażnika, nieudane żądanie i oczekiwane zachowanie. Przechowuj pakiet tam, gdzie zespół już pracuje, żeby nie został pominięty.
Jeśli budujesz aplikacje przez czat, wbuduj checklistę w planowanie. Dodaj krótką notkę "założenia bezpieczeństwa" dotyczącą authn/authz, wejść i sekretów, a potem uruchom przegląd zaraz po pierwszej działającej wersji.
Platformy takie jak Koder.ai (koder.ai) mogą dobrze się wpisywać w ten zwyczaj, ponieważ pozwalają szybko iterować, zachowując punkty kontrolne przeglądu. Używanie snapshotów i rollbacku przy ryzykownych zmianach ułatwia wysyłanie poprawek bezpieczeństwa bez utknięcia, gdy coś przestanie działać.