castomAPI
Odbierz klucz

Spisane, potem zmierzone

Bezpieczeństwo

Ta strona nie powołuje się na żaden certyfikat, bo żaden nie został jeszcze wydany. To, co twierdzi, jest konkretne, i każde twierdzenie możesz sprawdzić na API.

Najemcy

Każdy klucz należy do jednego konta, a każda przechowywana rzecz — połączenie z platformą, własny endpoint, dokument — jest ograniczona do tego konta i, gdzie produkt to deklaruje, do projektu. Zasób, który istnieje, ale nie jest Twój, odpowiada dokładnie tak jak nieistniejący: 404 za zero tokenów i identyczna treść. Enumeracja przez 403 jest tu niemożliwa z założenia.

Własny kod

Własny endpoint działa we własnym izolacie V8 na każde żądanie, z dwiema sekundami CPU i 128 MB pamięci. Nie ma sieci. Jedyny most, $safeFetch, wykonuje się na hoście z pozycją sieciową hosta — więc jego polityka jest tym, co się liczy: rozwiązuje nazwę hosta przed połączeniem, odmawia każdego adresu spoza publicznego zakresu unicast w v4, v6 albo v4 mapowanym na v6, śledzi przekierowania ręcznie i weryfikuje każdy skok. Polityka żyje w module bez zależności natywnych, więc jest testowana bez natywnej kompilacji.

Żądania po stronie serwera

Endpointy narzędziowe pobierające adres — scrape, crawl, zrzut ekranu, proxy, safe-fetch — przechodzą przez tego samego strażnika: nazwa hosta rozwiązana najpierw, każdy zwrócony adres sprawdzony, każde przekierowanie zweryfikowane, rozmiar odpowiedzi ograniczony. Tam, gdzie w grę wchodzi przeglądarka (zrzuty, audyt UX), pozostałe okno DNS rebinding jest udokumentowane, a nie przemilczane.

Połączenia z platformami

Integracja podłącza własne konto użytkownika końcowego. Tokeny są przechowywane zaszyfrowane (AES-256-GCM) i odświeżane na żądanie; rodzina, której dostawca rotuje token odświeżania przy każdym użyciu, jest obsługiwana per grant, więc siostrzane połączenia nigdy nie zostają z unieważnionym poświadczeniem. Adres zgody jest wydawany tylko z sesji panelu, nigdy z klucza API — kto trzyma stan CSRF, decyduje, które konto zostanie podłączone, a to musi być osoba w przeglądarce. Jednorazowy stan jest konsumowany atomowo.

Identyfikatory w ścieżkach

Każdy identyfikator wklejany do ścieżki usługi nadrzędnej jest sprawdzany zakotwiczonym wzorcem przed użyciem, łącznie z identyfikatorami przychodzącymi z odpowiedzi samego dostawcy. encodeURIComponent nie zamyka tej klasy — kropki przez niego przechodzą — więc sprawdzenie jest prawdziwą asercją, w schemacie i w handlerze.

Poprawność rozliczeń to własność bezpieczeństwa

200, które nie jest sukcesem, to pieniądze pobrane za niewykonaną pracę. Odpowiedzi dostawców są klasyfikowane tam, gdzie są konsumowane, mechanicznie, więc ok: false, userErrors, statusy per element w wsadach i ich kuzyni zamieniają się w nierozliczane błędy zamiast w płatne sukcesy. Częściowy sukces rozlicza per udany element, nigdy per wywołanie.

Ta witryna

castomapi.com ładuje skrypty wyłącznie z tego serwisu i z dwóch usług prowadzonych przez Castomo — naszego Observera, który niczego nie zapisuje na Twoim urządzeniu, i przycisku czatu — nie ustawia cookies, nie wywołuje analityki firm trzecich i serwuje własne fonty. Polityka bezpieczeństwa treści w nagłówku każdej strony — default-src 'self', script-src ograniczone do tej witryny oraz observer.castomo.com i chat.castomapi.com, object-src 'none' — jest egzekwowana przez Twoją przeglądarkę, więc tracker dodany przez pomyłkę zawiódłby głośno, a nie po cichu. Jedyny skrypt inline, bootstrap motywu, jest dopuszczony przez hash.

Zgłaszanie

Znalazłeś coś? Napisz na api@castomo.com z „security” w temacie. security.txt mówi to samo w formacie, którego oczekują badacze.