{"id":2525,"date":"2026-07-09T05:00:44","date_gmt":"2026-07-09T05:00:44","guid":{"rendered":"https:\/\/news.jurskitech.pl\/blog\/uncategorized\/dlaczego-twoja-aplikacja-webowa-traci-na-zlej-strategii-autoryzacji-3-bledy\/"},"modified":"2026-07-09T05:00:44","modified_gmt":"2026-07-09T05:00:44","slug":"dlaczego-twoja-aplikacja-webowa-traci-na-zlej-strategii-autoryzacji-3-bledy","status":"publish","type":"post","link":"https:\/\/news.jurskitech.pl\/blog\/warto-wiedziec\/dlaczego-twoja-aplikacja-webowa-traci-na-zlej-strategii-autoryzacji-3-bledy\/","title":{"rendered":"Dlaczego Twoja aplikacja webowa traci na z\u0142ej strategii autoryzacji? 3 b\u0142\u0119dy"},"content":{"rendered":"<h2 id=\"dlaczegotwojaaplikacjawebowatracinazejstrategiiautoryzacji3bdy\">Dlaczego Twoja aplikacja webowa traci na z\u0142ej strategii autoryzacji? 3 b\u0142\u0119dy<\/h2>\n<p>Autoryzacja to jeden z tych element\u00f3w, kt\u00f3re zwykle traktujemy po macoszemu \u2013 dop\u00f3ki nie wybuchnie. A potem jest p\u0142acz, nerwy i audyt bezpiecze\u0144stwa. Z perspektywy kilkunastu lat w bran\u017cy widz\u0119, \u017ce nawet w zaawansowanych technologicznie firmach autoryzacja jest traktowana jako \u201edodatek\u201d do logowania, a nie kluczowy element architektury. Tymczasem \u017ale zaprojektowany system autoryzacji potrafi zniszczy\u0107 UX, spowolni\u0107 development i narazi\u0107 firm\u0119 na wycieki danych. Oto trzy najcz\u0119stsze b\u0142\u0119dy, kt\u00f3re pope\u0142niaj\u0105 zespo\u0142y \u2013 i jak ich unikn\u0105\u0107.<\/p>\n<h3 id=\"bd1zbytskomplikowaneroleczylinawszelkiwypadek\">B\u0142\u0105d 1: Zbyt skomplikowane role \u2013 czyli \u201ena wszelki wypadek\u201d<\/h3>\n<p>Jeden z moich klient\u00f3w \u2013 platforma SaaS dla kadr \u2013 mia\u0142 w systemie 47 r\u00f3l. Ka\u017cda rola mia\u0142a inne uprawnienia, a niekt\u00f3re r\u00f3\u017cni\u0142y si\u0119 tylko jednym checkboxem. Efekt? Nowi u\u017cytkownicy sp\u0119dzali 20 minut na konfiguracji, a potem i tak dzwonili do supportu. Administratorzy mylili role, a developerzy sp\u0119dzali godziny na testowaniu permutacji.<\/p>\n<p>Problem le\u017cy w podej\u015bciu: \u201edajmy ka\u017cdemu osobn\u0105 rol\u0119, bo kiedy\u015b mo\u017ce si\u0119 przyda\u0107\u201d. W praktyce to prowadzi do parali\u017cu decyzyjnego i b\u0142\u0119d\u00f3w konfiguracji. Zamiast 47 r\u00f3l, wystarczy\u0142y 4-5, ale z mo\u017cliwo\u015bci\u0105 precyzyjnego nadawania uprawnie\u0144 (np. przez atrybuty). Rozwi\u0105zanie? Zastosuj model RBAC (Role-Based Access Control) z ograniczon\u0105 liczb\u0105 r\u00f3l. Je\u015bli potrzebujesz wi\u0119kszej ziarnisto\u015bci, rozwa\u017c ABAC (Attribute-Based Access Control) \u2013 wtedy uprawnienia wynikaj\u0105 z cech u\u017cytkownika i kontekstu, a nie z przypisanej roli.<\/p>\n<p><strong>Skutek biznesowy:<\/strong> U\u017cytkownicy nie rezygnuj\u0105 z aplikacji przez skomplikowany onboarding, a support nie tonie w pytaniach o uprawnienia.<\/p>\n<h3 id=\"bd2autoryzacjapostronieklientaczylifrontenddecyduje\">B\u0142\u0105d 2: Autoryzacja po stronie klienta \u2013 czyli \u201efrontend decyduje\u201d<\/h3>\n<p>Widzia\u0142em to wielokrotnie: aplikacja SPA, a logika autoryzacji oparta na tym, co wyrenderuje frontend. Przycisk \u201eUsu\u0144 u\u017cytkownika\u201d jest po prostu ukryty, je\u015bli rola nie ma uprawnie\u0144. Niestety, wystarczy otworzy\u0107 konsol\u0119 dewelopersk\u0105 i wywo\u0142a\u0107 odpowiednie API, by zrobi\u0107 co\u015b, czego nie powinno si\u0119 robi\u0107. To nie jest b\u0142\u0105d \u2013 to przepis na katastrof\u0119.<\/p>\n<p>Autoryzacja musi by\u0107 weryfikowana po stronie serwera. Ka\u017cde zapytanie API powinno przechodzi\u0107 przez middleware, kt\u00f3ry sprawdza, czy u\u017cytkownik ma prawo wykona\u0107 akcj\u0119. Frontend mo\u017ce (i powinien) ukrywa\u0107 UI dla wygody, ale nigdy nie mo\u017ce by\u0107 jedyn\u0105 barier\u0105.<\/p>\n<p><strong>Przyk\u0142ad z \u017cycia:<\/strong> Firma e-commerce mia\u0142a panel admina, w kt\u00f3rym role by\u0142y sprawdzane tylko na froncie. Jeden z pracownik\u00f3w, kt\u00f3ry mia\u0142 ograniczone uprawnienia, odkry\u0142, \u017ce wystarczy podmieni\u0107 ID w \u017c\u0105daniu HTTP, by dosta\u0107 si\u0119 do danych kadrowych. Wyciek\u0142 numer PESEL prezesa. Koszt? Sprawa w UODO i utrata zaufania klient\u00f3w.<\/p>\n<p><strong>Jak to zrobi\u0107 dobrze?<\/strong> Zawsze weryfikuj na backendzie. U\u017cywaj framework\u00f3w, kt\u00f3re wymuszaj\u0105 autoryzacj\u0119 na poziomie kontrolera (np. atrybuty [Authorize] w .NET, dekoratory w Django). I nigdy, przenigdy nie ufaj danym przes\u0142anym przez klienta.<\/p>\n<h3 id=\"bd3brakaudytuimonitorowaniaczyliotympomylimypniej\">B\u0142\u0105d 3: Brak audytu i monitorowania \u2013 czyli \u201eo tym pomy\u015blimy p\u00f3\u017aniej\u201d<\/h3>\n<p>Kiedy autoryzacja dzia\u0142a, nikt o niej nie my\u015bli. A kiedy przestaje dzia\u0142a\u0107 \u2013 jest ju\u017c za p\u00f3\u017ano. Wi\u0119kszo\u015b\u0107 firm nie loguje, kto i kiedy uzyska\u0142 dost\u0119p do wra\u017cliwych danych. W razie incydentu nie da si\u0119 odtworzy\u0107, co si\u0119 sta\u0142o. To troch\u0119 jak brak czarnej skrzynki w samolocie.<\/p>\n<p><strong>Co powinno by\u0107 logowane?<\/strong> <\/p>\n<ul>\n<li>Ka\u017cda pr\u00f3ba dost\u0119pu do zasobu z autoryzacj\u0105 (czy udana, czy nie).<\/li>\n<li>Zmiany w rolach i uprawnieniach.<\/li>\n<li>Logowania i wylogowania, szczeg\u00f3lnie z nietypowych lokalizacji.<\/li>\n<\/ul>\n<p><strong>Jak to wdro\u017cy\u0107?<\/strong> U\u017cyj gotowych narz\u0119dzi, np. AWS CloudTrail, Azure Monitor, albo w\u0142asnego loggera z odpowiednim poziomem szczeg\u00f3\u0142owo\u015bci. Pami\u0119taj, \u017ce logi musz\u0105 by\u0107 chronione przed modyfikacj\u0105 (append-only) i regularnie audytowane.<\/p>\n<p><strong>Skutek biznesowy:<\/strong> Brak audytu to nie tylko ryzyko bezpiecze\u0144stwa, ale te\u017c problemy z compliance (RODO, PCI DSS). A je\u015bli dojdzie do wycieku, nie b\u0119dziesz m\u00f3g\u0142 udowodni\u0107, \u017ce zrobi\u0142e\u015b wszystko, by go powstrzyma\u0107.<\/p>\n<h2 id=\"jaktowygldawpraktycecasestudyanonimowe\">Jak to wygl\u0105da w praktyce \u2013 case study (anonimowe)<\/h2>\n<p><strong>Klient:<\/strong> Platforma e-learningowa dla \u015bredniej firmy.<br \/>\n<strong>Problem:<\/strong> U\u017cytkownicy (kursanci, trenerzy, administratorzy) mieli problemy z dost\u0119pem do kurs\u00f3w. Trenerzy widzieli kursy innych trener\u00f3w, kursanci mieli dost\u0119p do panelu admina (przez przypadek), a administratorzy nie mogli zarz\u0105dza\u0107 uprawnieniami bez restartu serwera.<\/p>\n<p><strong>Przyczyna:<\/strong> Autoryzacja by\u0142a robiona \u201ena szybko\u201d \u2013 role by\u0142y przechowywane w localStorage, a backend tylko na podstawie ID u\u017cytkownika zwraca\u0142 dane (bez sprawdzania, czy ma do nich prawo). Dodatkowo role by\u0142y przypisywane przez plik konfiguracyjny, kt\u00f3ry wymaga\u0142 r\u0119cznej edycji.<\/p>\n<p><strong>Rozwi\u0105zanie:<\/strong> <\/p>\n<ol>\n<li>Wprowadzili\u015bmy RBAC z 4 rolami (ucze\u0144, trener, admin, superadmin).<\/li>\n<li>Ka\u017cde \u017c\u0105danie API jest weryfikowane na backendzie przez dedykowany middleware.<\/li>\n<li>Role s\u0105 przechowywane w bazie danych i zarz\u0105dzane przez panel admina (bez restartu).<\/li>\n<li>Wdro\u017cyli\u015bmy logowanie wszystkich zdarze\u0144 autoryzacyjnych do centralnego systemu.<\/li>\n<\/ol>\n<p><strong>Efekt:<\/strong> Spadek zg\u0142osze\u0144 supportu o 60%. Czas konfiguracji nowego u\u017cytkownika z 15 minut do 2 minut. Zero incydent\u00f3w bezpiecze\u0144stwa w ci\u0105gu roku.<\/p>\n<h2 id=\"podsumowanie\">Podsumowanie<\/h2>\n<p>Autoryzacja to nie tylko \u201ekontrola dost\u0119pu\u201d \u2013 to element, kt\u00f3ry wp\u0142ywa na UX, bezpiecze\u0144stwo i skalowalno\u015b\u0107. Unikaj zbyt wielu r\u00f3l, nigdy nie polegaj na autoryzacji po stronie klienta, i zawsze loguj zdarzenia. Je\u015bli Twoja aplikacja ma wi\u0119cej ni\u017c kilka u\u017cytkownik\u00f3w, warto zainwestowa\u0107 w dedykowany system zarz\u0105dzania to\u017csamo\u015bci\u0105 (np. Auth0, Keycloak) albo przynajmniej solidnie przemy\u015ble\u0107 architektur\u0119.<\/p>\n<p>Jako praktyk mog\u0119 powiedzie\u0107 jedno: dobrze zaprojektowana autoryzacja to taka, o kt\u00f3rej nikt nie m\u00f3wi \u2013 bo po prostu dzia\u0142a. Z\u0142a autoryzacja to ta, kt\u00f3ra wybucha w najmniej oczekiwanym momencie. Pytanie tylko, czy wolisz zap\u0142aci\u0107 za projektowanie, czy za gaszenie po\u017caru?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dlaczego Twoja aplikacja webowa traci na z\u0142ej strategii autoryzacji? 3 b\u0142\u0119dy Autoryzacja to jeden z tych element\u00f3w, kt\u00f3re zwykle traktujemy po macoszemu \u2013 dop\u00f3ki nie wybuchnie. A potem jest p\u0142acz, nerwy i audyt bezpiecze\u0144stwa. Z perspektywy kilkunastu lat w bran\u017cy widz\u0119, \u017ce nawet w zaawansowanych technologicznie firmach autoryzacja jest traktowana jako \u201edodatek\u201d do logowania, a<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[826,557,421,9,946],"class_list":["post-2525","post","type-post","status-publish","format-standard","hentry","category-warto-wiedziec","tag-ai-w-ux","tag-autoryzacja","tag-bezpieczenstwo-aplikacji","tag-jurskitech","tag-rbac"],"_links":{"self":[{"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/posts\/2525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/comments?post=2525"}],"version-history":[{"count":0,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/posts\/2525\/revisions"}],"wp:attachment":[{"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/media?parent=2525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/categories?post=2525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/news.jurskitech.pl\/blog\/wp-json\/wp\/v2\/tags?post=2525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}