Bezpieczeństwo Aplikacji Webowych

0

Witam, z racji nadmiaru czasu wolnego podczas kwarantanny postanowiłem pogmerać trochę w temacie bezpieczeństwa aplikacji webowych. Na codzień pracuję jako Java + angular developer. Moje pytanie odnosi się do wskazówek jakie technologie, książki, szkolenia są warte uwagi w tym temacie. Lub nawet jakiś przykładowy projekt na repo. Znalazłem całkiem interesujący film na yt bazujący na Spring Security + JWT:

Chciałbym sobie napisać sam jakiś mikroservis do autentykacji użytkowników. W firmie działa to tak że z klienta (angular) podczas wejścia na apke pierwszy request jest wysyłany do dedykowanego firmowego serwisu (nie mam do niego dostępu, ani do kodu) gdzie po id użytkownika (załączane w headerze/cookie, zczytywane z maszyny, cała aplikacja jest dla pracowników banku) jest generowany token i zapisywany w przeglądarce. Każdy następny request przechodzi znowu przez ten serwis autentyfikacyjny, waliduje token, jeśli jest ok to (mogę się domyślać) puszcza request dalej, gdzie następnie (lub inny serwis - nazwijmy go API_Gateway) działa jak typowy filtr, obsługuje każdy request, dalej "wycina" część URL, dodaje firmowy prefix, dzięki czemu następuje przekierowanie do rzeczywistego backendu mojej apki (niemożna bezpośrednio odwołać się do backendu). Dalej to już autoryzacja do zasobów na poziomie backendu. Nie wiem czy takie podejście jest dobre (tj wspominałem kompletnie się na tym nie znam). Chciałbym napisać coś podobnego, lub po prostu coś poprawnego co jest przyjęte za wzór w ramach dzisiejszych standardów.

3

Dokształcenie:
Zacznij chybba od hasła OWASP.
https://owasp.org/

Pooglądaj kilka prezentacji od nich lub innych - tu kolega Marek opowiada : )

materiałów jest dużo (to dobrze i źle -dużo dostępnych dużo do nauczenia).

Co do rozwiązania - to to co macie w firmach brzmi jak typowe rozwiązanie oparte o token (czasowy pewnie) - jest powszechnie używane.
Jest dość bezpieczne, o ile pozostałe elementy aplikacji są bezpieczne.

Wyszukaj OWASP Top ten i spróboj zrozumieć każdy z tych problemów (pamiętając, że poza tym są inne sposoby ataków (nie tylko dziesięć)). XSS, Injection to podstawa.
Ciekawe hasła: CSP.

1

Dobra ale jakie jest pytanie? :)

  1. Takie rozwiazanie oparte o JWT token jest dość popularne, szczególnie w dobie SPA, ale ma swoje minusy. Główny minus jest taki, ze wszystko musi lecieć przez JS. To znaczy że nie możesz zrobić jakiegoś bezpośredniego linka do zabezpieczonego zasobu, który użytkownik mógłby po prostu "kliknąć". Do takiego zastosowania lepiej sprawdza się klasyczne session cookie, bo w przeciwieństwie do tokenu, cookies są automatycznie wysyłane przez przeglądarkę. Możesz też mieć jakieś narzędzia które wspierają np. tylko basic-auth.
  2. Zrobienie czegoś takiego ze Spring Security jest w praktyce wyjątkowo proste, raptem kilka linijek.
  3. Jeśli chodzi o taki API-Gateway to też jest to raczej popularne rozwiązanie, raz bo działa jako reverse proxy a dwa jako load balancer. No i sprawia że frontend nie musi się martwić konfigurowaniem adresów wszystkich mikroserwisów, tylko zna ten jeden URL do ktorego zawsze uderza.
  4. Generalnie mały ma to związek z bezpieczeństwem, to jest raczej kontrola dostępu a nie bezpieczeństwo.
1

Obowiązkowa książka od Sekuraka : "Bezpieczeństwo aplikacji webowych".
Co do API GateWay poczytać można dokumentację i bloga np. https://konghq.com/kong/
JWT? :) http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/
https://developer.okta.com/blog/2017/08/17/why-jwts-suck-as-session-tokens

0

Hej odkopuję temat:
czy z perspektywy java developera warto poświęcić czas na pozycję od sekuraka?

1

Jako że niedawno skończyłem czytać tą książkę to się wypowiem. Wiedza tam zawarta jest najbardziej przydatna dla full stacka ewentualnie web developera. Większość książki poświęcona jest klasycznym atakom XSS, SQL Injection, XML External Entity i błędom związanym z deserializacją. Na uwagę zasługuje bardzo dobrze napisany rozdział o HTTP Content Security Policy jak również dobre omówienie JWT i oraz CORSów.

Na kolejny plus zasługują checklist'y umiejszcmone na końcach rozdziałów które można potem wydrukować i przyczepić nad biurkiem, lub wykorzystać przy wewnętrznych testach bezpieczeństwa.

Nie wszystkie rozdziały trzymają poziom, od razu widać czy autor danego rozdziału często chwyta za pióro czy raczej praca z językiem polskim jest mu obca. Początkowe rozdziały zwłaszcza ten o BurpSuit'cie i Chrome Dev Tools były nudne.

Ostateczna ocena 4 na 5. Warto kupić, nie będą to pieniądze stracone choć ma się wrażenie że mogło być nieco lepiej. Jeżeli kupujesz to z budżetu firmowego to jest to "no-brainer", ta książka powinna być w każdej firmowej biblioteczce....

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