[Security] Chcę otworzyć api na świat jak zrobić to bezpiecznie?

Odpowiedz Nowy wątek
2020-08-01 11:28

Rejestracja: 5 lat temu

Ostatnio: 2 minuty temu

0

Cześć,

Mam zagwozdkę jak w tytule tematu. Powiedzmy, że mam aplikację, do której się potrafi zalogować user, który oczywiście ma konto w serwisie. Aplikacja, do której się loguje (tutaj używam, o ile to ma znaczenie mechanizmów jwt) służy do zarządzania w dużym skrócie spersonalizowaną konfiguracją. Ten sam użytkownik dostaje dostęp do api, aby podłączyć się do serwisu używając swojej aplikacji. Teraz zastanawiam się jak powinienem zabezpieczyć takie api. Co ważne user może trzymać w aplikacji np. maila klientów.
Poszperałem trochę jak robią to inne serwisy i znalazłem dość proste rozwiązanie:
1) User w konfigruacji generuje sobie api-key i token
2) Używając api-key i tokena wysyła requesty (po https tylko i wyłącznie)
3) Po mojej stronie jest zaimplementowane basic auth
Zastanawiam się, czy takie zabezpieczenie wystarczy, czy trzeba implementować bardziej skomplikowane mechanizmy?

Pozostało 580 znaków

2020-08-01 14:57
Moderator

Rejestracja: 12 lat temu

Ostatnio: 11 godzin temu

0

Co się stanie jak wyślę JWT używające "none" jako algorytmu?


Poleci 401. - podroznik 2020-08-01 19:48

Pozostało 580 znaków

2020-08-01 20:05

Rejestracja: 11 miesięcy temu

Ostatnio: 31 minut temu

2

Bearer authentication + ssl + w kliencie cert pinning żeby nikt komunikacji nie mógł łatwo podsłuchać (bez tego ssl można obejść) zwykle wystarcza. Po drodze nikt nie odszyfruje ruchu, a jak ktoś podstawi jakieś proxy po drodze, to dzięki weryfikacji certyfikatu serwera klient odmówi połączenia

Cert pinning potrafi mocno ugryźć w rzyć, o czym się nawet Apple swego czasu przekonało. - hauleth 2020-08-01 20:46
Trzeba pamiętać żeby wygenerować nowy hash jeśli zmienisz (a nie przedłużysz istniejący) certyfikat. - Meini 2020-08-01 22:22
@Meini: Super dzięki za odpowiedź. - podroznik 2020-08-02 10:05
Nie wiem, jak jest w przeglądarce, odnosiłem się bardziej do klienta jako aplikacji desktopowej/mobilnej. Serwer nic nie musi wiedzieć o cert pinning w kliencie, klient ma zaszyty prawidłowy klucz i sprawdza, czy się zgadza z tym, który ma certyfikat api serwera. Wtedy bez modyfikacji klienta nie da się podsłuchać ruchu, bo klient odmówi połączenia z api, jeśli certyfikat ssl jest inny, nawet jeśli adres się zgadza. Serwer żadnych kluczy w nagłówku nie wysyła, działa jak zwykle. - Meini 2020-08-02 13:52

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0