8 min

Lista kontrolna bezpieczeństwa Claude Code do szybkich przeglądów aplikacji webowych

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.

Lista kontrolna bezpieczeństwa Claude Code do szybkich przeglądów aplikacji webowych

Czym jest lekki przegląd bezpieczeństwa

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:

  • Założenia dotyczące uwierzytelniania (jak wiesz, kim jest użytkownik)
  • Luki w autoryzacji (co użytkownik może zrobić)
  • Walidacja wejścia
  • Obsługa sekretów
  • Typowe powierzchnie wstrzyknięć (SQL, uruchamianie poleceń, renderowanie szablonów, przekierowania, uploady)

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:

  • Dokładne pliki i nazwę funkcji/handlera
  • Ryzykowne zachowanie w jednym zdaniu
  • Minimalny krok reprodukcyjny (żądanie, payload lub ścieżka kliknięcia)
  • Dlaczego to ma znaczenie (wpływ) i kto może to wywołać
  • Kierunek bezpiecznej poprawki (nie pełne przerobienie)

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.

Określ zakres w 10 minut

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:

  • Zaliczenie: każda wrażliwa akcja pokazuje jawne sprawdzenie authn i authz.
  • Nie zaliczenie: którykolwiek endpoint ufa klientowi w kwestii identyfikatora użytkownika lub roli.
  • Zaliczenie: wejścia są walidowane po stronie serwera, nie tylko w UI.
  • Nie zaliczenie: sekrety pojawiają się w logach, konfiguracjach lub w kodzie klienta.

Jeśli nie potrafisz opisać, jak wygląda porażka, zakres jest wciąż zbyt nieostry.

Przygotuj kontekst, który dasz Claude Code

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:

  • Wejście auth: parsowanie sesji/JWT, ustawienia ciastek, callbacki logowania, middleware auth
  • Trasy + handlery: kontrolery, metody RPC, resolvery GraphQL, handlery jobów w tle
  • Warstwa danych: zapytania ORM, pomocniki SQL, budowniczowie zapytań, migracje dla wrażliwych tabel
  • Sprawdzanie polityk: sprawdzenia ról, sprawdzenia własności, flagi funkcji, endpointy tylko dla admina
  • Walidacja: walidatory schematów żądań, handlery uploadów plików, kod deserializacji

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.

Krok po kroku: workflow na 30–60 minutowy przegląd

Zmieniaj czas na ramy:

  • 10 minut na orientację
  • 15–30 minut na śledzenie przepływów
  • 10 minut na spisanie

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:

  1. Zarysuj punkty wejścia i granice zaufania. Zanotuj trasy publiczne, trasy dla zalogowanych, admin, webhooki, uploady i callbacki stron trzecich. Oznacz miejsca, gdzie dane przechodzą z kontroli użytkownika do zaufania serwera.
  2. Dla każdego ważnego endpointu zapisz, co udowadnia tożsamość i gdzie to się dzieje. Jeśli check jest w "middleware", potwierdź, że każda trasa rzeczywiście go używa.
  3. Zrób to samo dla autoryzacji. Wybierz jedną ryzykowną akcję (podejrzenie danych innych użytkowników, zmiana ról, eksport, usunięcie) i prześledź decyzję uprawnień aż do zapytania do bazy.
  4. Śledź dane wejściowe do „sanków”. Podążaj jednym parametrem od żądania do SQL/ORM, renderowania szablonu, wykonania polecenia, pobierania URL (SSRF), przekierowań i ścieżek plików.
  5. Podczas śledzenia przeszukaj przepływy sekretów i konfiguracji. Szukaj tokenów w logach, kodzie klienta, komunikatach o błędach i zrzutach środowiska.

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ś.

Kontrole authn: udowodnij, kim jest użytkownik

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ę:

  • Zidentyfikuj wszystkie punkty wejścia auth (logowanie web, tokeny API, auth mobilne, auth wewnętrznych usług) i potwierdź, że zbiegają się do spójnego modelu tożsamości.
  • Sprawdź logowanie i reset hasła pod kątem limitów szybkości, blokad i możliwości enumeracji użytkowników (różne komunikaty błędów lub czasy odpowiedzi dla istniejących vs nieistniejących kont).
  • Przejrzyj sesje i ciasteczka: HttpOnly, Secure, SameSite, wygaśnięcie, rotacja przy logowaniu i zmianie uprawnień oraz unieważnianie wylogowania (po stronie serwera, nie tylko „usuń ciasteczko”).
  • Sprawdź MFA i ścieżki odzyskiwania, żeby ścieżka odzyskiwania nie była słabsza niż MFA (np. reset tylko przez e-mail, który omija MFA).
  • Przejrzyj logowanie niepowodzeń auth: przydatne dla ops, ale nie ujawniaj szczegółów, które pomagają atakującym (brak wskazówek "użytkownik istnieje", brak dumpów tokenów).

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.

Kontrole authz: udowodnij, że użytkownik ma pozwolenie

Zarabiaj kredyty podczas budowy
Udostępniaj to, co zbudujesz w Koder.ai lub polecaj współpracowników, aby zbierać kredyty platformy.

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:

  • Owner może zapraszać członków
  • Member może edytować własny profil
  • Support może oglądać dane bilingowe, ale nie zmieniać planu
  • Admin może usuwać projekty

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:

  • Znajdź endpointy/mutacje tworzące, usuwające, eksportujące, zmieniające role lub dostęp do bilingów
  • Dla każdego zlokalizuj serwerową kontrolę uprawnień (nie frontend)
  • Szukaj kontrolowanych przez użytkownika ID (projectId, userId, orgId) i potwierdź sprawdzenia własności
  • Potwierdź, że ścieżki tylko dla adminów failują zamknięciem, gdy roli brakuje
  • Sprawdź granice tenantów: orgId/accountId powinny pochodzić z kontekstu sesji, nie tylko z danych żądania

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."

Walidacja wejścia: trzymaj złe dane z dala jak najwcześniej

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:

  • Wartości w URL (query i path)
  • Pola w ciele żądania (w tym zagnieżdżone JSONy)
  • Nagłówki (nagłówki auth, content-type, forwarded IP)
  • Ciastka
  • Uploady plików (nazwa, rozmiar, typ, metadane)

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):

  • Zbyt długie stringi (10 000+ znaków)
  • Złe typy (tablica zamiast stringa)
  • Nieoczekiwane wartości enumów
  • Specjalne znaki zmieniające znaczenie
  • Puste wartości dla pól wymaganych

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.

Typowe powierzchnie wstrzyknięć do szybkiego sprawdzenia

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ą:

Szybkie cele skanu

Szukaj tych wzorców i wymagaj konkretnego miejsca wywołania i przykładu ładunku dla każdego:

  • SQL injection: zapytania składane ze stringów, dynamiczne ORDER BY i budowniczowie IN (...), które łączą wartości użytkownika
  • XSS: renderowanie HTML, szablony, podglądy markdown, edytory rich text, gdzie zakłada się "sanitize później"
  • Command injection: wywołania shell wokół przetwarzania obrazów, narzędzi PDF, backupów czy kroków "convert" przekazujących flagi kontrolowane przez użytkownika
  • SSRF: pobieranie URLi dla webhooków, podglądy linków, import z URL i wewnętrzne checki przyjmujące URL od użytkownika
  • Path traversal: endpointy pobierania plików, rozpakowywanie zipów i pipeline’y uploadów, które później czytają pliki po nazwie

Uważ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.

Obsługa sekretów: znajdź wycieki i słabe przechowywanie

Wykrywaj IDOR-y wcześnie
Uruchom aplikację CRUD i prześledź sprawdzanie własności end-to-end zanim dodasz funkcje.

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:

  • Zmienne środowiskowe i pliki konfiguracyjne aplikacji
  • Wyjścia CI i logi buildów (łącznie z logami nieudanych wdrożeń)
  • Bundle klienta i buildy mobilne (wszystko, co trafia do użytkowników)
  • Endpointy debugowe, strony health i narzędzia administratorskie
  • Strony błędów, stack trace i zdarzenia analityczne

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:

  • "Wyszukaj hardcoded tokeny, hasła i klucze prywatne. Wypisz dokładne ścieżki plików i wzorce stringów, które dopasowałeś."
  • "Znajdź kod, który loguje nagłówki żądań, ciasteczka, zmienne środowiskowe lub pełne obiekty błędów. Pokaż linie logów i jakie wrażliwe pola mogą się w nich pojawić."
  • "Sprawdź, czy sekrety mogą trafić do snapshotów, eksportów lub artefaktów buildów. Zidentyfikuj, co jest przechwycone i gdzie jest przechowywane."

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.

Prompty wymuszające konkretne ustalenia (wzorce do kopiowania)

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.

  • Dowód na poziomie pliku: "Przeszukaj repo pod kątem auth, sessions, tokens i middleware. Wymień dokładne pliki, funkcje i zakresy linii. Zacytuj odpowiednie fragmenty. Jeśli nie możesz wskazać kodu, odpowiedz 'no evidence found'."
  • Ślad od wejścia do sink: "Wybierz jedno wejście kontrolowane przez użytkownika (nagłówek, query, body, cookie). Pokaż przepływ danych krok po kroku od wejścia do miejsca użycia (SQL, HTML, shell, template, redirect, ścieżka pliku). Wymień każdą funkcję w łańcuchu."
  • Kroki reprodukcji: "Podaj minimalne repro w curl (metoda, kształt URL, nagłówki, body). Dołącz oczekiwany status code i przykład odpowiedzi w przypadku sukcesu/porażki. Podaj założenia (role, stan auth)."
  • Kontrola false-positive: "Co obaliłoby to ustalenie? Wypisz 2–3 kontrole: flagi configu, kolejność middleware, walidacja allowlistą, parametryzowane zapytania, escapowanie frameworka. Jeśli któreś są obecne, wyjaśnij, jak ryzyko się zmienia."
  • Najmniejsza bezpieczna poprawka + test: "Zaproponuj najmniejszą zmianę, która blokuje problem bez łamania poprawnych przypadków. Następnie napisz jeden test do dodania (nazwa, cel, wejścia, oczekiwany wynik). Jeśli są kompromisy, je wyjaśnij."

Jeśli output dalej jest niejasny, przyciśnij:

"Odpowiedz tylko: ścieżka pliku, nazwa funkcji, ryzykowna linia i jednozdaniowy wpływ."

Realistyczny przykład: przekształcanie przypuszczenia w zweryfikowany problem

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:

  • Authn: żądanie wymaga sesji lub tokenu, więc wygląda na chronione.
  • Authz: handler ufa accountId z query i aktualizuje to konto bez sprawdzenia, czy należy do zalogowanego użytkownika.
  • Walidacja wejścia: displayName jest obcinane, ale accountId nie jest walidowane jako liczba całkowita.
  • Powierzchnia wstrzyknięcia: SQL składany ze konkatenacji jak "... WHERE account_id=" + accountId.

Dobre sprawozdanie jest konkretne:

  • Krytyczność: Wysoka (IDOR + możliwa SQL injection)
  • Dowód: żądanie z ważnym loginem zmienia inne konto, gdy accountId jest zmienione; SQL budowany z niezaufanego inputu
  • Poprawka: ignorować accountId od klienta, używać id uwierzytelnionego użytkownika po stronie serwera; parametryzować zapytanie
  • Test: spróbować zaktualizować inne konto i oczekiwać 403; odrzucać nienumeryczne accountId

Po poprawce, szybko sprawdź ponownie:

  • Wyślij to samo żądanie z innym accountId i potwierdź, że kończy się niepowodzeniem.
  • Potwierdź w logach, że serwer używa id uwierzytelnionego użytkownika, nie parametru query.
  • Potwierdź, że zapytanie używa placeholderów/parametrów, nie łączenia stringów.
  • Uruchom negatywny test dla sfałszowanego inputu (litery, bardzo duża liczba).

Pułapki, które sprawiają, że przeglądy nie wykrywają prawdziwych problemów

Prototypuj ścieżki uwierzytelniania
Iteruj nad ścieżkami logowania i resetu w czacie, a potem zweryfikuj ustawienia ciastek i tokenów.

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.

Szybkie sposoby, w jakie przeglądy się mylą

Te pułapki pojawiają się wciąż:

  • Zakładanie, że "tylko admin" bo to strona admina, a nie że serwer to egzekwuje
  • Prośba o szeroki przegląd zamiast "pokaż dokładne żądanie, które pomija X"
  • Akceptowanie "możliwa SQL injection" bez wskazania miejsca budowy zapytania i ścieżki input→query
  • Pomijanie mniej oczywistych punktów wejścia: webhooki, zadania zaplanowane, narzędzia importu i działania admina wewnętrznego
  • Łatanie objawów (dodawanie filtra lub regexu) bez naprawy przyczyny, czyli brak walidacji lub brak autoryzacji

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.

Szybkie kontrole przed wydaniem

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ą:

  • Friccja authn: Spróbuj 10 błędnych logowań z rzędu. Czy widzisz limit szybkości, blokadę lub przynajmniej spowolnienie? Czy można rozpoznać istnienie emaila po komunikatach błędów lub czasie odpowiedzi?
  • Authz przez zamianę ID: Wybierz prawdziwy zasób (order, invoice, profile). Zmień ID w URL, body JSON lub zmiennych GraphQL. Czy otrzymujesz dane, które nie są twoje, nawet "tylko metadane"?
  • Reguły wejścia: Dla kluczowych pól (email, imię, wyszukiwanie, upload pliku) spróbuj bardzo długich stringów, dziwnego Unicode i nieoczekiwanych typów (liczba zamiast stringa). Czy wymuszasz limity długości i allowlisty, gdzie to istotne?
  • Ujawnianie sekretów: Przeszukaj ostatnie logi i bundle klienta pod kątem tokenów, kluczy API, JWT lub "Authorization: Bearer". Sprawdź też strony błędów. "To było tylko w staging" często kończy się "to wyszło na produkcję".
  • Powierzchnie wstrzyknięć: Szukaj konkatenacji stringów w SQL, filtrach, renderowaniu szablonów, poleceniach shell lub URLach przekierowań. Jeśli input trafia do któregoś z nich bez silnej walidacji, zakładaj ryzyko, dopóki nie udowodnisz inaczej.

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.

Następne kroki: wprowadź tę checklistę do procesu builda

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ć:

  • Poprawka: co zmieni się w kodzie lub konfiguracji
  • Test: jak udowodnisz, że to naprawiono (jedno żądanie, jeden test jednostkowy, jeden krok QA)
  • Właściciel: jedna osoba odpowiedzialna
  • Termin: następne wydanie lub konkretny dzień
  • Dowód: plik/endpoint i dokładne żądanie lub payload, które pokazały problem

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ć.

Często zadawane pytania

Czym jest lekka kontrola bezpieczeństwa?

Lekka kontrola punktowa to ukierunkowany, 30- do 60-minutowy przegląd najbardziej ryzykownych ścieżek w aplikacji. Pomaga wykryć oczywiste błędy o dużym wpływie przed wydaniem, ale nie zastępuje pełnego audytu ani testu penetracyjnego.

Które części aplikacji webowej powinienem sprawdzić najpierw?

Zacznij od jednej do trzech ścieżek, w których błąd mógłby ujawnić dane, przemieścić pieniądze lub przyznać dodatkowy dostęp. Logowanie, resetowanie hasła, finalizacja zakupu, działania administratora i ustawienia konta to dobre miejsca na początek.

Jak uzyskać użyteczne ustalenia dotyczące bezpieczeństwa z Claude Code?

Poproś o dokładne ścieżki plików, nazwy funkcji, ryzykowny kod, minimalną prośbę do odtworzenia problemu, wpływ oraz niewielką propozycję poprawki. Każde twierdzenie bez wskazówek w kodzie i sposobu przetestowania uznaj za niepotwierdzone.

Jaka jest różnica między uwierzytelnianiem a autoryzacją?

Uwierzytelnianie potwierdza, kto wysłał żądanie. Autoryzacja potwierdza, że ta osoba może wykonać żądaną akcję na konkretnym zasobie. Endpoint może wymagać poprawnego logowania, a mimo to ujawniać dane innego użytkownika, jeśli pomija sprawdzenie własności.

Jak szybko sprawdzić podatność IDOR?

Zmień identyfikator zasobu w żądaniu, będąc zalogowanym jako inny użytkownik. Na przykład wypróbuj inne projectId, accountId lub identyfikator zamówienia, a następnie potwierdź, że serwer zwraca 403 albo wyłącznie dane z tenantu bieżącego użytkownika.

Co powinna sprawdzać walidacja danych wejściowych po stronie serwera?

Waliduj dane na serwerze od razu po wejściu do aplikacji. Sprawdzaj typ, wymagane pola, długość, format i dozwolone wartości, a następnie odrzucaj nieoczekiwane dane wejściowe, zanim trafią do logiki biznesowej lub magazynu danych.

Gdzie zwykle ukrywają się błędy typu injection?

Szukaj przepływu danych wejściowych użytkownika do SQL, HTML, poleceń powłoki, adresów URL, ścieżek plików, szablonów i obsługi przesyłania plików. SQL budowany ze stringów, nieograniczone adresy URL przekierowań i nazwy plików używane jako ścieżki wymagają natychmiastowej uwagi.

Jak wykryć wycieki sekretów przed wydaniem?

Sprawdź pliki konfiguracyjne, logi, raporty błędów, bundlle klienckie, buildy mobilne, endpointy debugowania, dane wyjściowe CI, eksporty, snapshoty i kopie zapasowe. Każdy sekret wysłany do przeglądarki lub zapisany w logach jawnym tekstem należy usunąć i zrotować.

Jakie najszybsze kontrole uwierzytelniania warto uruchomić?

Przejrzyj flagi ciasteczek, takie jak HttpOnly, Secure, SameSite, wygaśnięcie oraz rotację sesji po zalogowaniu lub zmianie uprawnień. Przetestuj też wielokrotne nieudane logowania i resetowanie haseł pod kątem limitów żądań, enumeracji kont oraz słabych ścieżek odzyskiwania dostępu.

Co powinienem zrobić po znalezieniu problemu z bezpieczeństwem?

Przygotuj konkretną poprawkę, jeden test potwierdzający jej działanie, właściciela, termin docelowy i pierwotne dowody. Przy ryzykownych zmianach używaj snapshotów i mechanizmu wycofania, aby zespół mógł wdrożyć poprawkę i szybko wrócić do poprzedniego stanu, jeśli działanie zostanie zaburzone.

Related posts