Budujesz swoją aplikację, przeglądarka wyrzuca czerwony błąd CORS, szukasz na forum i kopiujesz rozwiązanie, które obiecuje, że wszystko zadziała. Zwykle to najgorsze z możliwych. Zrozummy, czym jest CORS i dlaczego ten skrót jest niebezpieczny.
Czym naprawdę jest CORS
Domyślnie przeglądarka nie pozwala, żeby site-a.com odczytał odpowiedź API na site-b.com. To polityka tego samego pochodzenia, i chroni twoich użytkowników: uniemożliwia złośliwej karcie odczyt danych z innej karty, gdzie jesteś zalogowany. CORS to mechanizm, którym twój serwer mówi te konkretne pochodzenia są dozwolone, przez nagłówek Access-Control-Allow-Origin.
Błąd, który psuje wszystko
Niebezpieczny wzorzec to odbijanie dowolnego pochodzenia, które przychodzi, i na dodatek zezwalanie na dane uwierzytelniające:
Access-Control-Allow-Originustawiony na pochodzenie, które prosi (odbicie dynamiczne)- razem z
Access-Control-Allow-Credentials: true
Przy takiej kombinacji dowolna strona, którą odwiedzi twój użytkownik, może wywołać twoje API z ciasteczkami sesji użytkownika i odczytać odpowiedź. Innymi słowy, byle jaka strona może wyciągnąć prywatne dane twojego użytkownika, a on się nie zorientuje. Wildcard * jest mniej groźny, bo przeglądarka zabrania łączyć go z danymi uwierzytelniającymi, ale i tak nie ma czego szukać na produkcji.
Jak skonfigurować go dobrze
Myśl obroną, nie wygodą:
- Prowadź allowlistę dozwolonych pochodzeń i porównuj ją dokładnie. Nigdy nie odbijaj tego, co przychodzi, bez walidacji.
- Włączaj
Allow-Credentialstylko, jeśli naprawdę musisz wysyłać ciasteczka, i tylko dla konkretnych pochodzeń. - Ogranicz metody i nagłówki do tego, czego używasz (
Allow-Methods,Allow-Headers). - Uważaj z dodawaniem
nullalbo subdomen firm trzecich do listy.
Dlaczego trudno to wykryć
Ta luka jest cicha: wszystko działa, nie ma widocznego błędu i aplikacja wygląda zdrowo. Zauważasz to dopiero, gdy ktoś to wykorzysta. Dlatego warto przeglądać konfigurację CORS wprost przy każdym deployu, zamiast ufać, że brak błędu znaczy, że jest dobrze.
Przejrzyj swój CORS ze Scanaris
Scanaris wykonuje kontrolę tylko do odczytu, czy twoje API odbija pochodzenia i jak odpowiada na nagłówki CORS, bez wykonywania ataków ani dotykania twoich danych: obserwuje tylko publiczną odpowiedź. Jeśli znajdzie niebezpieczną konfigurację, daje ci fix prompt, żeby twoja AI przepisała ją z allowlistą. Przeskanuj swoją stronę i unikaj luki, której nikt nie widzi, dopóki nie jest za późno.