Zależności, logowanie i proces
Bezpieczeństwo to nie jednorazowy przegląd. Te punkty dotyczą kodu, którego nie napisałeś (Twoich zależności), oraz nawyków, które chronią aplikację po starcie.
Lista kontrolna
- Przypinaj i skanuj zależności. Commituj lockfile i uruchamiaj skaner podatności (oraz audyt Twojej platformy) w CI. Aktualizuj pakiety ze znanymi podatnościami.
- Uważaj na zmyślone pakiety. Narzędzia AI czasem importują pakiet, który nie istnieje, a atakujący rejestrują te nazwy z malware ("slopsquatting"). Potwierdź, że każda zależność to prawdziwy, zamierzony pakiet, zanim ją zainstalujesz.
- Nie uruchamiaj ślepo niezaufanego kodu ani kroków budowania. Pobrane repozytorium lub wygenerowany skrypt postinstall może uruchomić dowolny kod. Przejrzyj go przed uruchomieniem.
- Loguj zdarzenia bezpieczeństwa, nie sekrety. Zapisuj logowania, niepowodzenia, trafienia limitów i działania administratorów na potrzeby audytu. Nigdy nie loguj haseł, tokenów, kluczy ani pełnych numerów kart.
- Obsługuj błędy bez wycieków. Przechwytuj wyjątki, zwracaj ogólny komunikat, a stack trace'y i zapytania zostawiaj wyłącznie w logach serwera.
- Utrzymuj analizę statyczną w CI. Narzędzia takie jak Semgrep wychwytują błędy wstrzyknięć i autoryzacji, zanim zmiany zostaną scalone.
- Testuj jak atakujący. Zestaw testów powinien obejmować nieprawidłowe dane wejściowe i przypadki nieautoryzowanego dostępu, a nie tylko ścieżkę szczęśliwą. Gdy zestaw przejdzie, uruchom skaner black-box (na przykład OWASP ZAP) na wdrożonym adresie URL.
- Poproś o niezależny przegląd. Samodzielny audyt przeoczy rzeczy, zwłaszcza ślepe plamy samego autora. Przed szerszym startem zleć zewnętrzny test penetracyjny i rozważ odniesienie się do standardu, takiego jak OWASP ASVS.
- Dla funkcji AI testuj warstwę modelu. Jeśli Twoja aplikacja wstawia niezaufane treści do promptu, przetestuj ją pod kątem prompt injection oraz wycieku danych między użytkownikami lub najemcami. Prawdziwe zabezpieczenia trzymaj w kodzie (zawężaj każde narzędzie i zapytanie do bieżącego użytkownika), nigdy w instrukcjach promptu.
- Miej plan powrotu. Trzymaj kopie zapasowe, z których faktycznie odtworzyłeś dane, oraz plan rotacji sekretów i unieważniania sesji na wypadek wycieku.
Jak testować
- Uruchom audyt zależności i skan sekretów w CI i przeczytaj wynik.
- Skieruj skaner black-box na środowisko staging.
- Poproś kogoś, kto nie napisał kodu, o próbę jego złamania.