Bezpieczeństwo
Nie jestem ekspertem od bezpieczeństwa, ale jedno wiem na pewno: jest ono jednym z najważniejszych aspektów tworzenia stron WWW. W końcu jeśli go zabraknie, nawet najlepsza UX-owo aplikacja nie będzie w stanie wynagrodzić osobie użytkowniczej strat związanych z wyciekiem jej danych. Dlatego warto znać przynajmniej podstawy rzemiosła zapewniania bezpieczeństwa, aby pewnego dnia nie spotkała nas nieprzyjemna niespodzianka.
I nie będę ukrywał, że w tym zakresie pozwolę sobie odesłać do osób eksperckich. Bardzo dobrym punktem wyjścia może być sekurakowa książka o bezpieczeństwie, Bezpieczeństwo aplikacji webowych, wydana w 2019 roku. Dokładnie opisuje ona techniczne aspekty bezpieczeństwa, w tym to, jak działa Sieć “pod spodem”, w jaki sposób przeglądarki podchodzą do kwestii bezpieczeństwa, czym jest zasada tego samego źródła (same origin), ale także – jakie są najczęstsze rodzaje ataków (w tym te nieśmiertelne, czyli XSS czy SQL injection) oraz jak wygląda testowanie bezpieczeństwa (zwłaszcza nieswoich serwisów) od strony prawnej. Jeśli miałabyś, Droga Osoba Czytająca, przeczytać jedną książkę na temat bezpieczeństwa aplikacji webowych, to ta pozycja jest dobrym wyborem. Kolejnym zaufanym źródłem jest niewątpliwie strona OWASP, które publikuje m.in. listę 10 najpopularniejszych rodzajów zagrożeń bezpieczeństwa na stronach WWW. I choć ta lista jest nieustannie aktualizowana, to pewne rzeczy są na niej zadziwiająco stałe.
Osobiście chciałbym zwrócić uwagę na inną kwestię. Platforma sieciowa nieustannie się rozwija. Im więcej ma możliwości, tym częściej pojawia się pytanie, czy aby te możliwości na pewno zapewniają wystarczająco wysoki poziom bezpieczeństwa. Niejako standardem jest już szyfrowanie połączenia. Ale właśnie – to, co kiedyś wymagało pracy i wydatków (bo certyfikaty były drogie), dzisiaj można osiągnąć całkowicie automatycznie i za darmo. Szyfrowanie od dawna nie jest już wyznacznikiem bezpieczeństwa i kłódka w pasku adresu jedynie ułatwia sprawę osobom o niecnych zamiarach. Stała się do tego stopnia bezużyteczna, że Chrome ją usunął. Paradoksalnie mamy bezpieczniejszą Sieć (bo zdecydowana większość połączeń jest obecnie szyfrowana), ale z drugiej strony – w pewien sposób może to wręcz wpływać na obniżenie bezpieczeństwa. I tak, nowe technologie około-bezpiecznikowe nieustannie powstają, jak np. WebAuthn do logowania się przy pomocy kluczy sprzętowych. Ale gdzieś obok wciąż jest przepaść między tym, co jest możliwe do zrobienia w przeglądarce (a jest choćby komunikacja z urządzeniami wpiętymi przez USB), a tym, co osoby użytkownicze wiedzą na temat działania przeglądarki. I tu rodzi się przestrzeń, w której brakuje edukacji ze strony środowiska webdeveloperskiego, a która to byłaby w stanie poprawić bezpieczeństwo być może bardziej niż kolejny standard bezpiecznego logowania. Zresztą problem niewiedzy dotyczy często także drugiej strony. Bezpieczeństwo jest trudnym technicznie tematem i mało jest osób webdeveloperskich, które naprawdę wiedzą, jak to wszystko działa. Łatwo popełnić jakiś błąd, którego konsekwencje mogą nas nawiedzać przez długie bezsenne noce.
I w tym całym galimatiasie bezpieczeństwowym jest jeszcze jedna kwestia: nieustanny taniec między odpowiednio wysokim poziomem bezpieczeństwa, a sensownym poziomem UX-u czy wręcz inkluzywności. Nowinki bezpieczeństwowe często wymagają najnowszej wersji przeglądarki czy systemu operacyjnego. A nie wszystkie osoby takowe posiadają. Na ile etyczne jest odcinanie takich osób w imię polepszenia bezpieczeństwa pozostałych? Czy bank – który mimo wszystko trzyma nasze pieniądze – może to zrobić? Czy powinien? A co ze stroną rządową?
Bezpieczeństwo jest trudnym tematem. Nie tylko od strony technicznej.
Źródła
- Michał Bentkowski, Artur Czyż, Rafał 'bl4de' Janicki, Jarosław Kamiński, Adrian 'vizzdoom' Michalczyk, Mateusz Niezabitowski, Marcin Piosek, Michał Sajdak, Grzegorz Trawiński, Bohdan Widła, Gynvael Coldwind, Bezpieczeństwo aplikacji webowych, Kraków: Securitum, .
- OWASP Top Ten, (data dostępu: ), w: OWASP Foundation, (data dostępu: ).
- Does my site need HTTPS?, (data dostępu: ).
- Troy Hunt, Humans are Bad at URLs and Fonts Don’t Matter, (data dostępu: ), w: Troy Hunt, Troy Hunt, (data dostępu: ).
- Jess Weatherbed, Google is changing Chrome’s lock icon because nobody knows what it means, (data dostępu: ), w: The Verge.
- Guide to Web Authentication, (data dostępu: ).
- Noam Rosenthal, Should The Web Expose Hardware Capabilities?, (data dostępu: ), w: Smashing Magazine, (data dostępu: ).
- Jakub Mrugalski, Najczęstsze błędy programistów popełniane w formularzu resetu hasła, (data dostępu: ), w: Niebezpiecznik.pl, (data dostępu: ).
- Jeremy Keith, Insecure …again, (data dostępu: ), w: Jeremy Keith, Adactio, (data dostępu: ).
Dodatkowe materiały
- Paul Kinlan, The off by default web, (data dostępu: ), w: Paul Kinlan, Paul Kinlan, (data dostępu: ).
- Dennis Jackson, Say (an encrypted) hello to a more private internet, (data dostępu: ), w: dist://ed, (data dostępu: ).
- Kamil Józwik, Uwierzytelnianie i autoryzacja po stronie frontendu, (data dostępu: ), w: Kamil Józwik, Fronstack.pl, (data dostępu: ).