Połączenie HTTPS + np. JWT i jesteś względnie bezpieczny, a robi się to w dosłownie kilku linijkach.
JWT polega w skrócie na tym, że serwer w trakcie logowania generuje token, który zawiera info o algorytmie szyfrującym, dacie wygaśnięcia, jakieś własne dane (np. id usera czy jego imię) i zaszyfrowane poprzednie części. Szyfrowanie jest z użyciem klucza znanego tylko serwerowi. Serwer odsyła token po zalogowaniu, a potem klient musi go do każdego żądania dodać. Tylko serwer potrafi odszyfrować ostatnią część tokena więc może sprawdzić czy to co się tam znajduje jest ok. Jeżeli po stronie klienta token jest trzymany w sensowny sposób, np. w bezpiecznym ciasteczku, do którego nie ma bezpośrednio dostępu z JSa to jest ok.
Tak to robię dla aplikacji korzystających z REST API.
HTTPS zapewnia bezpieczeństwo informacji m.in. w trakcie logowania (nikt teoretycznie nie podsłucha).