{"id":10342,"date":"2026-09-03T18:25:00","date_gmt":"2026-09-03T16:25:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10342"},"modified":"2026-08-19T10:53:45","modified_gmt":"2026-08-19T08:53:45","slug":"token-jwt-jest-podpisany-a-nie-zaszyfrowany","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/","title":{"rendered":"Token JWT jest podpisany, a nie zaszyfrowany"},"content":{"rendered":"<p>Token JSON Web Token wygl\u0105da na zaszyfrowany. To d\u0142ugi ci\u0105g znak\u00f3w bez czytelnych s\u0142\u00f3w, stoi w nag\u0142\u00f3wku <code>Authorization<\/code> i traktuje si\u0119 go jak tajemnic\u0119. Czym jest naprawd\u0119: dwoma obiektami JSON w Base64 plus podpisem &#8211; a Base64 to kodowanie, nie zamek.<\/p>\n<p>Wniosek jest kr\u00f3tki. Wszystko w \u0142adunku odczyta ka\u017cdy, kto ma token: przegl\u0105darka, do kt\u00f3rej trafi\u0142, proxy, przez kt\u00f3re przeszed\u0142, plik dziennika, kt\u00f3ry zapisa\u0142 adres, i zg\u0142oszenie, do kt\u00f3rego kto\u015b go wklei\u0142. To nie usterka, lecz budowa formatu. Problemem staje si\u0119 dopiero wtedy, gdy \u0142adunek pisze si\u0119 tak, jakby nikt go nie czyta\u0142.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/jwt-lesen-pl.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Token roz\u0142o\u017cony na trzy cz\u0119\u015bci rozdzielone kropkami, nag\u0142\u00f3wek i \u0142adunek zdekodowane do czytelnego JSON i oznaczone jako czytelne dla ka\u017cdego, podpis oznaczony jako jedyna cz\u0119\u015b\u0107, kt\u00f3ra cokolwiek chroni\"><figcaption>Dwie z trzech cz\u0119\u015bci odczyta ka\u017cdy. Trzecia jest jedyn\u0105, kt\u00f3ra w og\u00f3le co\u015b chroni.<\/figcaption><\/figure>\n<h2>Trzy cz\u0119\u015bci i co robi ka\u017cda z nich<\/h2>\n<p>Token sk\u0142ada si\u0119 z trzech sekcji rozdzielonych kropkami. Pierwsza podaje algorytm i cz\u0119sto u\u017cyty klucz. Druga niesie o\u015bwiadczenia &#8211; o kim token m\u00f3wi, na co pozwala, jak d\u0142ugo obowi\u0105zuje. Trzecia to podpis nad dwiema pierwszymi.<\/p>\n<p>Chroni wy\u0142\u0105cznie trzecia i chroni dok\u0142adnie jedn\u0105 w\u0142asno\u015b\u0107: \u017ce dwie pierwsze nie zmieni\u0142y si\u0119 od chwili podpisania. Nie ukrywa ich i nie trzeba jej rozumie\u0107, aby je odczyta\u0107. Token wklejony w dowolny dekoder natychmiast oddaje swoj\u0105 zawarto\u015b\u0107.<\/p>\n<h2>Czego \u0142adunek nie powinien zawiera\u0107<\/h2>\n<p>Ka\u017cde pole w \u0142adunku to pole wr\u0119czone posiadaczowi tokenu. Adres e-mail, pe\u0142ne imi\u0119 i nazwisko, data urodzenia &#8211; zamieniaj\u0105 dokument dost\u0119pu w przekazanie danych i trafiaj\u0105 tam, gdzie docieraj\u0105 dokumenty dost\u0119pu, a dane osobowe trafia\u0107 nie powinny: do dziennik\u00f3w proxy, pami\u0119ci przegl\u0105darki, raport\u00f3w o b\u0142\u0119dach.<\/p>\n<p>Drugi rodzaj to struktura wewn\u0119trzna. Lista r\u00f3l w rodzaju <code>billing_admin<\/code> albo numer najemcy zdradza, co istnieje za interfejsem i jak jest uporz\u0105dkowane &#8211; w\u0142a\u015bnie to atakuj\u0105cy wylicza w pierwszej kolejno\u015bci. Zwykle wystarczy kr\u00f3tki podmiot i zakres; reszta nale\u017cy do zapytania, kt\u00f3re serwer i tak wykonuje.<\/p>\n<p>Trzeci to wszystko, co przeznaczone by\u0142o wy\u0142\u0105cznie dla wystawcy. Tokeny wkleja si\u0119 do zg\u0142osze\u0144, a \u0142adunek z wewn\u0119trznym numerem klienta w\u0119druje razem z nimi.<\/p>\n<h2>exp jest jedyn\u0105 rzecz\u0105 ko\u0144cz\u0105c\u0105 token<\/h2>\n<p>Token obowi\u0105zuje, bo sam tak o sobie twierdzi. Nie ma stanu po stronie serwera, kt\u00f3ry by go ko\u0144czy\u0142: raz wystawiony dzia\u0142a, a\u017c minie o\u015bwiadczenie <code>exp<\/code>, a token bez <code>exp<\/code> dzia\u0142a na zawsze.<\/p>\n<p>Dlatego wylogowanie niczego nie uniewa\u017cnia. Klient odrzuca token, token pozostaje wa\u017cny, a kto zachowa\u0142 kopi\u0119, zachowuje dost\u0119p. Zako\u0144czenie tokenu przed czasem wymaga listy odrzuce\u0144 sprawdzanej przez ka\u017cd\u0105 us\u0142ug\u0119 &#8211; czyli powrotu dok\u0142adnie tego wsp\u00f3lnego stanu, kt\u00f3rego format mia\u0142 unika\u0107.<\/p>\n<p>Uk\u0142adem, kt\u00f3ry dzia\u0142a, jest kr\u00f3tko \u017cyj\u0105cy token dost\u0119pu i odwo\u0142ywalny centralnie token od\u015bwie\u017caj\u0105cy. Minuty dla pierwszego, a dla drugiego czas \u017cycia, kt\u00f3ry kto\u015b faktycznie obserwuje: token od\u015bwie\u017caj\u0105cy wa\u017cny rok to has\u0142o z dodatkowymi krokami.<\/p>\n<h2>Gdzie odczyt myli si\u0119 ze sprawdzeniem<\/h2>\n<p>Odczytanie tokenu i zaufanie mu to r\u00f3\u017cne czynno\u015bci, a r\u00f3\u017cnic\u0105 jest wywo\u0142anie biblioteki. Dekoder pokazuje o\u015bwiadczenia ka\u017cdego tokenu, tak\u017ce takiego, kt\u00f3ry powsta\u0142 r\u0119cznie trzy sekundy temu. Weryfikacja przelicza podpis wzgl\u0119dem klucza i dopiero ona odpowiada, czy o\u015bwiadczenia pochodz\u0105 od kogo\u015b uprawnionego do ich wystawienia.<\/p>\n<p>Z pomylenia obu wynikaj\u0105 dwa obrazy b\u0142\u0119du. Pierwszy to <code>alg: none<\/code> &#8211; token o\u015bwiadczaj\u0105cy, \u017ce nie ma podpisu. Weryfikator, kt\u00f3ry odczytuje algorytm z tokenu i si\u0119 do niego stosuje, przyjmie wszystko; algorytm musi ustala\u0107 aplikacja, a nie token. Drugi to ten sam b\u0142\u0105d z kluczem: us\u0142ug\u0119 oczekuj\u0105c\u0105 RS256, kt\u00f3ra dostaje token HS256, da si\u0119 nak\u0142oni\u0107 do sprawdzenia go kluczem publicznym jako wsp\u00f3lnym sekretem &#8211; a klucz publiczny jest publiczny.<\/p>\n<h2>Co nale\u017cy do ka\u017cdego tokenu<\/h2>\n<p>Na trzech o\u015bwiadczeniach warto nalega\u0107. <code>exp<\/code>, bo bez niego nic si\u0119 nie ko\u0144czy. <code>iss<\/code>, aby us\u0142uga rozpozna\u0142a, od kt\u00f3rego wystawcy token pochodzi, zamiast przyjmowa\u0107 wszystko, co da si\u0119 zweryfikowa\u0107. Oraz <code>aud<\/code> &#8211; to o\u015bwiadczenie zapobiega przyj\u0119ciu przez interfejs rozlicze\u0144 tokenu wystawionego dla interfejsu raport\u00f3w; kontrola, kt\u00f3r\u0105 \u0142atwo pomin\u0105\u0107 i trudno zauwa\u017cy\u0107, gdy jej brak.<\/p>\n<p>Nic z tego nie wymaga rozbudowanych narz\u0119dzi. Podzielenie tokenu po kropkach i zdekodowanie \u015brodkowej cz\u0119\u015bci trwa sekundy i odpowiada na pytania, na kt\u00f3re inaczej odpowiada si\u0119 za\u0142o\u017ceniem: jak d\u0142ugo to obowi\u0105zuje, na co pozwala i co zdradza ka\u017cdemu, kto to przeczyta.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kto ma token, ten czyta jego \u0142adunek. Kt\u00f3re pola nie maj\u0105 wi\u0119c w nim czego szuka\u0107, dlaczego exp jest jedyn\u0105 rzecz\u0105 ko\u0144cz\u0105c\u0105 token i gdzie odczyt myli si\u0119 ze sprawdzeniem.<\/p>\n","protected":false},"author":1,"featured_media":13871,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[152],"tags":[92051,92077],"class_list":["post-10342","post","type-post","status-publish","format-standard","hentry","category-tworzenie-stron-internetowych","tag-rest-api-pl","tag-web-security-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Token JWT jest podpisany, a nie zaszyfrowany - Lukas Wojcik - Blog<\/title>\n<meta name=\"description\" content=\"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Token JWT jest podpisany, a nie zaszyfrowany - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-03T16:25:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"luky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"luky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/\"},\"author\":{\"name\":\"luky\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Token JWT jest podpisany, a nie zaszyfrowany\",\"datePublished\":\"2026-09-03T16:25:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/\"},\"wordCount\":764,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png\",\"keywords\":[\"REST API\",\"Web Security\"],\"articleSection\":[\"Tworzenie stron internetowych\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/\",\"name\":\"Token JWT jest podpisany, a nie zaszyfrowany - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png\",\"datePublished\":\"2026-09-03T16:25:00+00:00\",\"description\":\"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Token JWT jest podpisany, a nie zaszyfrowany\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Token JWT jest podpisany, a nie zaszyfrowany\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"],\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/author\\\/luky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Token JWT jest podpisany, a nie zaszyfrowany - Lukas Wojcik - Blog","description":"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/","og_locale":"en_US","og_type":"article","og_title":"Token JWT jest podpisany, a nie zaszyfrowany - Lukas Wojcik - Blog","og_description":"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-03T16:25:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png","type":"image\/png"}],"author":"luky","twitter_card":"summary_large_image","twitter_misc":{"Written by":"luky","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/"},"author":{"name":"luky","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Token JWT jest podpisany, a nie zaszyfrowany","datePublished":"2026-09-03T16:25:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/"},"wordCount":764,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png","keywords":["REST API","Web Security"],"articleSection":["Tworzenie stron internetowych"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/","name":"Token JWT jest podpisany, a nie zaszyfrowany - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png","datePublished":"2026-09-03T16:25:00+00:00","description":"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-g.png","width":1200,"height":630,"caption":"Token JWT jest podpisany, a nie zaszyfrowany"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/token-jwt-jest-podpisany-a-nie-zaszyfrowany\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Token JWT jest podpisany, a nie zaszyfrowany"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"],"url":"https:\/\/www.lukaswojcik.com\/blog\/author\/luky\/"}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10342"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10342\/revisions"}],"predecessor-version":[{"id":12026,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10342\/revisions\/12026"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13871"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}