{"id":518,"date":"2026-04-23T12:23:53","date_gmt":"2026-04-23T12:23:53","guid":{"rendered":"https:\/\/nuplo.org\/?page_id=518"},"modified":"2026-04-27T11:59:47","modified_gmt":"2026-04-27T11:59:47","slug":"bezpieczenstwo","status":"publish","type":"page","link":"https:\/\/nuplo.org\/pl\/tworzenie-oprogramowania-w-erze-agentow-ai\/bezpieczenstwo\/","title":{"rendered":"Bezpiecze\u0144stwo"},"content":{"rendered":"\n<p>Dotar\u0142e\u015b do ko\u0144ca tej podr\u00f3\u017cy. Pozna\u0142e\u015b fundamenty bezpiecze\u0144stwa, nauczy\u0142e\u015b si\u0119 chroni\u0107 dane, budowa\u0107 bezpieczn\u0105 infrastruktur\u0119 i reagowa\u0107 na zagro\u017cenia.<br>Ten rozdzia\u0142 zamyka ca\u0142o\u015b\u0107, pokazuj\u0105c, jak utrzyma\u0107 system w dobrej kondycji na d\u0142u\u017csz\u0105 met\u0119 &#8211; poprzez monitoring, logowanie, reagowanie na incydenty oraz \u015bwiadome zarz\u0105dzanie cyklem \u017cycia aplikacji.<br>Bo dobra kuchnia to nie tylko \u015bwietne przepisy i narz\u0119dzia &#8211; to tak\u017ce porz\u0105dek, kontrola i czujno\u015b\u0107 ka\u017cdego dnia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"podstawowe-przyprawy-zrozumienie-triady-cia-0\">Podstawowe przyprawy: Zrozumienie Triady CIA<\/h2>\n\n\n\n<p>Triada CIA (Confidentiality, Integrity, Availability) to fundament modelu bezpiecze\u0144stwa informacji, kt\u00f3ry s\u0142u\u017cy jako przewodnik przy tworzeniu polityk i procedur w ka\u017cdej organizacji. Podobnie jak podstawowe przyprawy w kuchni, te trzy zasady \u2014 poufno\u015b\u0107, integralno\u015b\u0107 i dost\u0119pno\u015b\u0107 \u2014 musz\u0105 by\u0107 odpowiednio zbalansowane, aby system by\u0142 bezpieczny i u\u017cyteczny.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"poufnosc-confidentiality-chronienie-tajnej-receptury-1\">Poufno\u015b\u0107 (Confidentiality) \u2013 Chronienie tajnej receptury<\/h3>\n\n\n\n<p><strong>Poufno\u015b\u0107:<\/strong> Polega na zapewnieniu, \u017ce wra\u017cliwe dane s\u0105 chronione przed dost\u0119pem nieupowa\u017cnionych os\u00f3b lub system\u00f3w. W \u015bwiecie cyfrowym oznacza to, \u017ce tylko osoby z odpowiednimi uprawnieniami mog\u0105 &#8222;zobaczy\u0107 przepis&#8221;.<br><strong>Zagro\u017cenia:<\/strong> Dane mog\u0105 zosta\u0107 wykradzione poprzez bezpo\u015brednie ataki na systemy, przechwytywanie komunikacji (np. hase\u0142 czy plik\u00f3w) lub w wyniku b\u0142\u0119d\u00f3w ludzkich, takich jak wys\u0142anie poufnych informacji do niew\u0142a\u015bciwego adresata.<br><strong>Techniki ochrony:<\/strong> Aby zachowa\u0107 prywatno\u015b\u0107 danych, stosuje si\u0119 szyfrowanie (zar\u00f3wno danych przesy\u0142anych, jak i przechowywanych), uwierzytelnianie wielosk\u0142adnikowe (MFA), silne has\u0142a oraz rygorystyczne systemy kontroli dost\u0119pu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"integralnosc-integrity-gwarancja-swiezosci-i-poprawnosci-2\">Integralno\u015b\u0107 (Integrity) \u2013 Gwarancja \u015bwie\u017co\u015bci i poprawno\u015bci<\/h3>\n\n\n\n<p>Integralno\u015b\u0107 odnosi si\u0119 do dok\u0142adno\u015bci i kompletno\u015bci danych. Gwarantuje ona, \u017ce informacje nie zosta\u0142y zmodyfikowane lub sfa\u0142szowane przez niepowo\u0142ane osoby, co mo\u017cna por\u00f3wna\u0107 do pewno\u015bci, \u017ce nikt potajemnie nie zmieni\u0142 sk\u0142adnik\u00f3w w Twoim daniu.<br><strong>Zagro\u017cenia:<\/strong> Atakuj\u0105cy mo\u017ce pr\u00f3bowa\u0107 zmieni\u0107 tre\u015b\u0107 wiadomo\u015bci e-mail, zmodyfikowa\u0107 pliki konfiguracyjne, usun\u0105\u0107 logi systemowe lub wstrzykn\u0105\u0107 z\u0142o\u015bliwe oprogramowanie do naszych plik\u00f3w.<br><strong>Techniki ochrony: <\/strong>Do weryfikacji integralno\u015bci u\u017cywa si\u0119 haszowania, kt\u00f3re tworzy unikalny &#8222;cyfrowy odcisk palca&#8221; pliku. Nawet najmniejsza zmiana w danych spowoduje ca\u0142kowit\u0105 zmian\u0119 hasha, co pozwala natychmiast wykry\u0107 ingerencj\u0119. Stosuje si\u0119 r\u00f3wnie\u017c podpisy cyfrowe, certyfikaty oraz procesy kontroli zmian.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dostepnosc-availability-kuchnia-zawsze-gotowa-do-wydawania-dan-3\">Dost\u0119pno\u015b\u0107 (Availability) \u2013 Kuchnia zawsze gotowa do wydawania da\u0144<\/h3>\n\n\n\n<p>Dost\u0119pno\u015b\u0107 oznacza, \u017ce uprawnieni u\u017cytkownicy maj\u0105 dost\u0119p do system\u00f3w i danych wtedy, gdy ich potrzebuj\u0105. Nawet najbezpieczniejszy system jest bezu\u017cyteczny, je\u015bli kucharz nie mo\u017ce wej\u015b\u0107 do kuchni, a go\u015bcie nie mog\u0105 z\u0142o\u017cy\u0107 zam\u00f3wienia.<br><strong>Zagro\u017cenia:<\/strong> Dost\u0119pno\u015b\u0107 mog\u0105 ograniczy\u0107 awarie sprz\u0119tu, przerwy w dostawie pr\u0105du, katastrofy naturalne oraz cyberataki, takie jak DDoS (zalanie serwera ruchem, by przesta\u0142 dzia\u0142a\u0107) czy ransomware.<br><strong>Techniki ochrony: <\/strong>Aby zapewni\u0107 ci\u0105g\u0142o\u015b\u0107 dzia\u0142ania, stosuje si\u0119 zasilacze awaryjne (UPS), redundancj\u0119 (nadmiarowo\u015b\u0107) system\u00f3w, mechanizmy load balancing (r\u00f3wnowa\u017cenie obci\u0105\u017cenia), sieci dostarczania tre\u015bci (CDN) oraz plany odzyskiwania po awarii.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dlaczego-triada-cia-jest-kluczowa-4\">Dlaczego Triada CIA jest kluczowa?<\/h3>\n\n\n\n<p>Zrozumienie tych zale\u017cno\u015bci pozwala programistom na ocen\u0119 ryzyka i priorytetyzacj\u0119 dzia\u0142a\u0144. Analizuj\u0105c ka\u017cd\u0105 now\u0105 funkcj\u0119 aplikacji, warto zada\u0107 sobie pytania: Czy te dane mog\u0105 wyciec (poufno\u015b\u0107)? Czy kto\u015b mo\u017ce je po cichu zmieni\u0107 (integralno\u015b\u0107)? Czy system wytrzyma nag\u0142y wzrost ruchu (dost\u0119pno\u015b\u0107)?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"przygotowanie-stanowiska-bezpieczenstwo-kontenerow-i-infrastruktury-5\">Przygotowanie stanowiska: Bezpiecze\u0144stwo kontener\u00f3w i infrastruktury<\/h2>\n\n\n\n<p>W profesjonalnej kuchni nie wystarczy mie\u0107 dobry przepis; musisz mie\u0107 pewno\u015b\u0107, \u017ce Twoje narz\u0119dzia s\u0105 czyste, a stanowisko pracy bezpieczne. W \u015bwiecie cyfrowym Twoim &#8222;stanowiskiem&#8221; jest infrastruktura, w kt\u00f3rej uruchamiasz kod. Skupimy si\u0119 teraz na tym, jak sprawi\u0107, by to \u015brodowisko najcz\u0119\u015bciej oparte na kontenerach nie sta\u0142o si\u0119 s\u0142abym ogniwem Twojego systemu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"selekcja-skladnikow-bezpieczne-obrazy-bazowe-6\">Selekcja sk\u0142adnik\u00f3w: Bezpieczne obrazy bazowe<\/h3>\n\n\n\n<p>Konteneryzacja zrewolucjonizowa\u0142a wdra\u017canie aplikacji, ale przynios\u0142a nowe wyzwania. Ka\u017cdy obraz kontenera sk\u0142ada si\u0119 z wielu warstw i bibliotek, z kt\u00f3rych ka\u017cda mo\u017ce zawiera\u0107 &#8222;zepsute sk\u0142adniki&#8221;, czyli luki w zabezpieczeniach.<br><strong>Zaufane \u017ar\u00f3d\u0142a:<\/strong> Zawsze u\u017cywaj oficjalnych lub zweryfikowanych obraz\u00f3w od sprawdzonych dostawc\u00f3w.<br><strong>Minimalizm (Distroless):<\/strong> Zacznij od jak najmniejszego obrazu bazowego, kt\u00f3ry zawiera tylko to, co niezb\u0119dne do dzia\u0142ania Twojej aplikacji. Im mniej narz\u0119dzi w kontenerze, tym mniejsza &#8222;powierzchnia ataku&#8221; dla hakera.<br><strong>Skanowanie obraz\u00f3w: <\/strong>Regularnie u\u017cywaj narz\u0119dzi takich jak Trivy lub Docker Scout, aby wykry\u0107 znane podatno\u015bci, zanim trafi\u0105 one na produkcj\u0119.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czyste-blaty-hartowanie-hosta-i-izolacja-jadra-7\">Czyste blaty: Hartowanie hosta i izolacja j\u0105dra<\/h3>\n\n\n\n<p>Kontenery wsp\u00f3\u0142dziel\u0105 j\u0105dro (kernel) systemu operacyjnego gospodarza (hosta). Je\u015bli j\u0105dro ma b\u0142\u0105d, napastnik mo\u017ce &#8222;uciec&#8221; z kontenera (container breakout) i przej\u0105\u0107 kontrol\u0119 nad ca\u0142ym serwerem.<br><strong>Dedykowane hosty:<\/strong> Uruchamiaj kontenery na serwerach przeznaczonych wy\u0142\u0105cznie do tego celu, aby unikn\u0105\u0107 konflikt\u00f3w z innymi aplikacjami.<br><strong>Izolacja sieciowa: <\/strong>Domy\u015blnie kontenery w tej samej sieci mog\u0105 ze sob\u0105 swobodnie rozmawia\u0107. Powiniene\u015b wprowadzi\u0107 &#8222;segmentacj\u0119&#8221;, czyli rygorystyczne zasady firewall, kt\u00f3re pozwalaj\u0105 na komunikacj\u0119 tylko mi\u0119dzy tymi us\u0142ugami, kt\u00f3re faktycznie tego potrzebuj\u0105.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"tajne-schowki-bezpieczne-zarzadzanie-sekretami-8\">Tajne schowki: Bezpieczne zarz\u0105dzanie sekretami<\/h3>\n\n\n\n<p>Jednym z najcz\u0119stszych b\u0142\u0119d\u00f3w jest zostawianie &#8222;kluczy w drzwiach&#8221;, czyli hard kododowanie hase\u0142 lub kluczy API bezpo\u015brednio w plikach konfiguracyjnych (np. Dockerfile).<br><strong>Nigdy nie hardkoduj sekret\u00f3w:<\/strong> Wyciek klucza API (np. do AWS) do publicznego repozytorium mo\u017ce w ci\u0105gu kilku minut doprowadzi\u0107 do ogromnych strat finansowych.<br><strong>Zastosuj dedykowane narz\u0119dzia: <\/strong>U\u017cywaj mechanizm\u00f3w takich jak Docker Secrets lub zewn\u0119trznych mened\u017cer\u00f3w hase\u0142. Dane te powinny by\u0107 wstrzykiwane do kontenera w czasie rzeczywistym i szyfrowane.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"zasada-minimalnych-uprawnien-kto-ma-dostep-do-nozy-9\">Zasada minimalnych uprawnie\u0144: Kto ma dost\u0119p do no\u017cy?<\/h3>\n\n\n\n<p>Zasada minimalnych uprawnie\u0144 (Principle of Least Privilege) m\u00f3wi, \u017ce ka\u017cdy proces i u\u017cytkownik powinien mie\u0107 dost\u0119p tylko do tych zasob\u00f3w, kt\u00f3re s\u0105 mu niezb\u0119dne do pracy. Pomy\u015blmy o tym jak o pracy w kuchni, nasz kelner nie potrzebuje nosi\u0107 ze sob\u0105 tasaka do mi\u0119sa, kiedy wydaje dania i zbiera zam\u00f3wienia.<br><strong>Unikaj uprawnie\u0144 roota:<\/strong> Kontenery nigdy nie powinny by\u0107 uruchamiane z uprawnieniami administratora (root), je\u015bli nie jest to absolutnie konieczne.<br><strong>Kontrola dost\u0119pu (RBAC): <\/strong>Wprowad\u017a role i precyzyjne uprawnienia, aby ograniczy\u0107 mo\u017cliwo\u015b\u0107 poruszania si\u0119 hakera wewn\u0105trz Twojego systemu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"menu-pelne-pulapek-najgrozniejsze-ataki-i-walidacja-skladnikow-10\">Menu pe\u0142ne pu\u0142apek: Najgro\u017aniejsze ataki i walidacja sk\u0142adnik\u00f3w<\/h2>\n\n\n\n<p>Nawet je\u015bli Twoja kuchnia jest sterylna (bezpieczne kontenery), a przepis doskona\u0142y, mo\u017cesz otru\u0107 swoich go\u015bci, u\u017cywaj\u0105c zanieczyszczonych sk\u0142adnik\u00f3w. W \u015bwiecie IT tymi sk\u0142adnikami s\u0105 dane wej\u015bciowe od u\u017cytkownik\u00f3w. Je\u015bli ufasz im bezgranicznie, nara\u017casz system na najpowa\u017cniejsze b\u0142\u0119dy z listy OWASP Top 10.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"sql-injection-zatruwanie-bazy-danych-11\">SQL Injection \u2013 Zatruwanie bazy danych<\/h3>\n\n\n\n<p>To jedna z najstarszych i najgro\u017aniejszych &#8222;przypraw&#8221;. Atak nast\u0119puje, gdy napastnik zamiast zwyk\u0142ych danych (np. loginu) przesy\u0142a z\u0142o\u015bliwe polecenia SQL. Je\u015bli aplikacja nie odr\u00f3\u017cnia kodu od danych, baza wykona te polecenia, co mo\u017ce doprowadzi\u0107 do kradzie\u017cy milion\u00f3w rekord\u00f3w, tak jak w przypadku Heartland Payment Systems.<br><strong>Obrona: <\/strong>Nigdy nie \u0142\u0105cz r\u0119cznie string\u00f3w z zapytaniami. U\u017cywaj zapyta\u0144 parametryzowanych (Prepared Statements) lub narz\u0119dzi typu ORM, kt\u00f3re automatycznie oddzielaj\u0105 kod od danych wej\u015bciowych.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cross-site-scripting-xss-zlosliwe-skrypty-w-przegladarce-12\">Cross-Site Scripting (XSS) \u2013 Z\u0142o\u015bliwe skrypty w przegl\u0105darce<\/h3>\n\n\n\n<p>Atak XSS polega na wstrzykni\u0119ciu z\u0142o\u015bliwego kodu JavaScript do strony, kt\u00f3r\u0105 odwiedzaj\u0105 inni u\u017cytkownicy. S\u0142ynny robak &#8222;Samy\u201d z 2005 roku zainfekowa\u0142 w ten spos\u00f3b milion profili na MySpace w ci\u0105gu jednego dnia. Skrypt ten mo\u017ce kra\u015b\u0107 ciasteczka sesyjne, przejmowa\u0107 konta lub wykonywa\u0107 akcje w imieniu zalogowanego u\u017cytkownika.<br><strong>Obrona:<\/strong> Stosuj rygorystyczn\u0105 kontrol\u0119 danych na serwerze (usuwanie tag\u00f3w ) oraz kodowanie wyj\u015bcia (zamiana znak\u00f3w specjalnych, np. &lt; na &lt;), aby przegl\u0105darka nie interpretowa\u0142a danych jako kodu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cross-site-request-forgery-csrf-podszywanie-sie-pod-kucharza-13\">Cross-Site Request Forgery (CSRF) \u2013 Podszywanie si\u0119 pod kucharza<\/h3>\n\n\n\n<p>Atak ten polega na oszukaniu przegl\u0105darki uwierzytelnionego u\u017cytkownika, aby wykona\u0142a niechcian\u0105 akcj\u0119 na innej stronie (np. zmian\u0119 has\u0142a lub przelew), wykorzystuj\u0105c fakt, \u017ce strona ufa sesji u\u017cytkownika.<br><strong>Obrona: <\/strong>U\u017cywaj unikalnych token\u00f3w anty-CSRF dla ka\u017cdego formularza oraz ustawiaj atrybut SameSite w ciasteczkach, aby ograniczy\u0107 ich przesy\u0142anie przy \u017c\u0105daniach z zewn\u0119trznych witryn.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"zlota-zasada-nigdy-nie-ufaj-danym-wejsciowym-14\">Z\u0142ota zasada: Nigdy nie ufaj danym wej\u015bciowym<\/h3>\n\n\n\n<p>Kluczem do bezpiecznego &#8222;menu&#8221; jest pozytywna walidacja sk\u0142adnik\u00f3w (allow-listing). Zamiast zastanawia\u0107 si\u0119, co mo\u017ce by\u0107 gro\u017ane, okre\u015bl dok\u0142adnie, co jest dopuszczalne (np. tylko cyfry w polu wieku). Pami\u0119taj, \u017ce walidacja musi odbywa\u0107 si\u0119 zawsze po stronie serwera, poniewa\u017c zabezpieczenia po stronie klienta (w przegl\u0105darce) s\u0105 \u0142atwe do obej\u015bcia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tajne-receptury-sztuka-szyfrowania-i-doprawiania-haszy-sola-15\">Tajne receptury: Sztuka szyfrowania i doprawiania haszy sol\u0105<\/h2>\n\n\n\n<p>W ka\u017cdej szanuj\u0105cej si\u0119 kuchni istniej\u0105 sekrety, kt\u00f3rych nie wolno wyjawi\u0107. Czasem musimy wys\u0142a\u0107 przepis do innej filii restauracji (szyfrowanie), a czasem chcemy tylko sprawdzi\u0107, czy kucharz zna tajne has\u0142o, nie wyjawiaj\u0105c go nikomu (haszowanie). W tym rozdziale nauczysz si\u0119, jak dba\u0107 o poufno\u015b\u0107 i integralno\u015b\u0107 swoich danych.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"haszowanie-cyfrowy-odcisk-palca-skladnikow-16\">Haszowanie \u2013 Cyfrowy odcisk palca sk\u0142adnik\u00f3w<\/h3>\n\n\n\n<p>Haszowanie to proces jednokierunkowy, kt\u00f3ry zamienia dowoln\u0105 ilo\u015b\u0107 danych w sta\u0142ej d\u0142ugo\u015bci ci\u0105g znak\u00f3w. Mo\u017cna to por\u00f3wna\u0107 do mielenia mi\u0119sa \u2013 z kawa\u0142ka wo\u0142owiny zrobisz tatara, ale z tatara nigdy nie odtworzysz pierwotnego kawa\u0142ka mi\u0119sa.<br><strong>Zastosowanie:<\/strong> Idealne do przechowywania hase\u0142. System nie musi zna\u0107 Twojego has\u0142a, wystarczy, \u017ce przechowuje jego hasz i por\u00f3wnuje go podczas logowania.<br><strong>Wyb\u00f3r algorytmu: <\/strong>Unikaj &#8222;przeterminowanych&#8221; algorytm\u00f3w jak MD5 czy SHA-1, kt\u00f3re s\u0105 podatne na ataki. U\u017cywaj nowoczesnych rozwi\u0105za\u0144: Argon2 lub bcrypt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"sol-kuchenna-ochrona-przed-teczowymi-atakami-17\">S\u00f3l kuchenna \u2013 Ochrona przed &#8222;t\u0119czowymi&#8221; atakami<\/h3>\n\n\n\n<p>Samo haszowanie to za ma\u0142o. Atakuj\u0105cy u\u017cywaj\u0105 tzw. tablic t\u0119czowych (gotowych list haszy dla popularnych hase\u0142), aby b\u0142yskawicznie z\u0142ama\u0107 Twoje zabezpieczenia.<br><strong>Technika solenia: <\/strong>Do ka\u017cdego has\u0142a, przed jego haszowaniem, dodajemy s\u00f3l (salt) \u2013 unikalny, losowy ci\u0105g znak\u00f3w. Dzi\u0119ki temu nawet dwa identyczne has\u0142a (np. &#8222;123456&#8221;) b\u0119d\u0105 mia\u0142y zupe\u0142nie inne hasze w bazie danych, co czyni masowe ataki nieop\u0142acalnymi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"szyfrowanie-indestructible-safe-niezniszczalny-sejf-18\">Szyfrowanie \u2013 Indestructible Safe (Niezniszczalny sejf)<\/h3>\n\n\n\n<p>W przeciwie\u0144stwie do haszowania, szyfrowanie jest odwracalne, o ile posiadasz odpowiedni klucz.<br><strong>Szyfrowanie symetryczne:<\/strong> U\u017cywasz tego samego klucza do zamykania i otwierania sejfu (np. AES). Jest szybkie, ale musisz bezpiecznie przekaza\u0107 klucz drugiej stronie.<br><strong>Szyfrowanie asymetryczne: <\/strong>Masz dwa klucze \u2013 publiczny (kt\u00f3rym ka\u017cdy mo\u017ce &#8222;zamkn\u0105\u0107&#8221; dla Ciebie wiadomo\u015b\u0107) i prywatny (kt\u00f3rym tylko Ty mo\u017cesz j\u0105 &#8222;otworzy\u0107&#8221;). To podstawa bezpiecznej komunikacji w internecie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"https-bezpieczna-dostawa-przesylek-19\">HTTPS \u2013 Bezpieczna dostawa przesy\u0142ek<\/h3>\n\n\n\n<p>Przesy\u0142anie danych przez zwyk\u0142e HTTP jest jak wysy\u0142anie paczki, kt\u00f3r\u0105 ka\u017cdy kurier mo\u017ce otworzy\u0107 i przeczyta\u0107. HTTPS (HTTP + SSL\/TLS) to wysy\u0142anie tej samej paczki wewn\u0105trz niezniszczalnego sejfu.<br><strong>SSL\/TLS: <\/strong>Te protoko\u0142y dbaj\u0105 o to, by zanim dane rusz\u0105 w drog\u0119, serwer udowodni\u0142 swoj\u0105 to\u017csamo\u015b\u0107 za pomoc\u0105 certyfikatu, a nast\u0119pnie obie strony ustali\u0142y zaszyfrowany kana\u0142 komunikacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"uwaga-na-halucynacje-tokenow-jwt-20\">Uwaga na &#8222;halucynacje&#8221; token\u00f3w (JWT)<\/h3>\n\n\n\n<p>Cz\u0119stym b\u0142\u0119dem jest mylenie kodowania z szyfrowaniem. Tokeny JWT, powszechnie u\u017cywane do logowania, s\u0105 domy\u015blnie tylko zakodowane (Base64), a nie zaszyfrowane. Oznacza to, \u017ce ka\u017cdy mo\u017ce podejrze\u0107 ich zawarto\u015b\u0107 (np. ID u\u017cytkownika), cho\u0107 dzi\u0119ki podpisowi cyfrowemu nikt nie mo\u017ce ich po cichu zmieni\u0107. Nigdy nie wk\u0142adaj do nich hase\u0142 ani danych wra\u017cliwych.<br><strong>Z\u0142ota zasada kucharza: <\/strong>Nigdy nie wymy\u015blaj w\u0142asnych algorytm\u00f3w szyfrowania (&#8222;Don&#8217;t roll your own crypto&#8221;). Korzystaj ze sprawdzonych, standardowych bibliotek, kt\u00f3re przesz\u0142y rygorystyczne testy bezpiecze\u0144stwa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"selekcja-gosci-uwierzytelnianie-i-zarzadzanie-sesja-21\">Selekcja go\u015bci: Uwierzytelnianie i zarz\u0105dzanie sesj\u0105<\/h2>\n\n\n\n<p>W ka\u017cdej renomowanej restauracji selekcja go\u015bci przy wej\u015bciu oraz kontrola tego, kto ma dost\u0119p do kuchni, a kto tylko do sali jadalnej, jest kluczowa. W bezpiecze\u0144stwie system\u00f3w proces ten dzielimy na dwa fundamentalne etapy: uwierzytelnianie (sprawdzenie to\u017csamo\u015bci) oraz autoryzacj\u0119 (sprawdzenie uprawnie\u0144).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"kto-puka-do-drzwi-uwierzytelnianie-authentication-22\">Kto puka do drzwi? Uwierzytelnianie (Authentication)<\/h3>\n\n\n\n<p>Uwierzytelnianie to proces weryfikacji to\u017csamo\u015bci u\u017cytkownika \u2013 system musi mie\u0107 pewno\u015b\u0107, \u017ce &#8222;go\u015b\u0107&#8221; jest tym, za kogo si\u0119 podaje.<br><strong>Metody tradycyjne: <\/strong>Obejmuj\u0105 has\u0142a, kody PIN lub biometri\u0119. Coraz cz\u0119\u015bciej zaleca si\u0119 stosowanie uwierzytelniania wielosk\u0142adnikowego (MFA), kt\u00f3re chroni przed kradzie\u017c\u0105 danych dost\u0119powych.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"sesje-vs-tokeny-23\">Sesje vs Tokeny<\/h3>\n\n\n\n<p>Tradycyjne sesje przechowuj\u0105 stan na serwerze (np. w bazie danych), co u\u0142atwia ich uniewa\u017cnienie, ale utrudnia skalowanie. Nowoczesne systemy API cz\u0119\u015bciej korzystaj\u0105 z token\u00f3w (np. JWT), kt\u00f3re s\u0105 bezstanowe \u2013 serwer nie musi ich &#8222;pami\u0119ta\u0107&#8221;, bo wszystkie niezb\u0119dne informacje o u\u017cytkowniku s\u0105 zawarte w samym tokenie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dobre-praktyki-w-zarzadzaniu-dostepem-spizarnia-na-kod-24\">Dobre praktyki w zarz\u0105dzaniu dost\u0119pem: Spi\u017carnia na kod<\/h3>\n\n\n\n<p><strong>Kr\u00f3tki czas \u017cycia:<\/strong> Tokeny powinny szybko wygasa\u0107, aby ograniczy\u0107 okno czasowe dla potencjalnego w\u0142amywacza.<\/p>\n\n\n\n<p><strong>Refresh Tokens:<\/strong> Umo\u017cliwiaj\u0105 generowanie nowych token\u00f3w bez konieczno\u015bci ponownego wpisywania has\u0142a przez u\u017cytkownika.<\/p>\n\n\n\n<p><strong>Weryfikacja w\u0142asno\u015bci: <\/strong>Nie wystarczy sprawdzi\u0107, czy u\u017cytkownik jest zalogowany; nale\u017cy zawsze weryfikowa\u0107, czy jest on w\u0142a\u015bcicielem zasobu, o kt\u00f3ry prosi (np. &#8222;czy to jest moja faktura?&#8221;).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"serwowanie-dan-bezpieczne-api-i-ochrona-przed-przeciazeniem-25\">Serwowanie da\u0144: Bezpieczne API i ochrona przed przeci\u0105\u017ceniem<\/h2>\n\n\n\n<p>Interfejs API (Application Programming Interface) dzia\u0142a jak &#8222;okienko wydawcze&#8221; lub kelner w Twojej restauracji \u2013 to on po\u015bredniczy w komunikacji mi\u0119dzy systemami, przesy\u0142aj\u0105c zam\u00f3wienia od klienta (frontend) do kuchni (backend). Poniewa\u017c API s\u0105 wystawione na \u015bwiat zewn\u0119trzny, stanowi\u0105 g\u0142\u00f3wny cel atak\u00f3w, co wymaga zastosowania rygorystycznych mechanizm\u00f3w ochronnych.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"kontrola-tlumu-mechanizmy-rate-limiting-26\">Kontrola t\u0142umu: Mechanizmy Rate Limiting<\/h3>\n\n\n\n<p>Nawet je\u015bli Tw\u00f3j system jest bezpieczny, mo\u017ce przesta\u0107 dzia\u0142a\u0107, je\u015bli zostanie zalany zbyt du\u017c\u0105 liczb\u0105 \u017c\u0105da\u0144 naraz (ataki DDoS lub b\u0142\u0119dy w aplikacjach klienckich). Rate Limiting to praktyka ograniczania liczby zapyta\u0144, jakie dany u\u017cytkownik lub adres IP mo\u017ce wykona\u0107 w okre\u015blonym czasie.<br><strong>Strategie:<\/strong> Mo\u017cesz stosowa\u0107 limity sta\u0142e (np. 100 \u017c\u0105da\u0144 na minut\u0119), dynamiczne (zale\u017cne od obci\u0105\u017cenia systemu) lub zaawansowane algorytmy, takie jak token bucket czy leaky bucket, kt\u00f3re pozwalaj\u0105 na kr\u00f3tkie &#8222;serie&#8221; zapyta\u0144 przy zachowaniu stabilno\u015bci serwera.<br><strong>Zaleta:<\/strong> Rate limiting chroni przed nadu\u017cyciami, optymalizuje zasoby i daje czas na reakcj\u0119 w przypadku pr\u00f3by ataku brute-force na klucze API.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"maitre-dsystem-api-gateway-27\">Ma\u00eetre d&#8217;system: API Gateway<\/h3>\n\n\n\n<p>Zamiast wdra\u017ca\u0107 zabezpieczenia w ka\u017cdej mikrous\u0142udze z osobna, warto zastosowa\u0107 API Gateway \u2013 centralny punkt wej\u015bcia do systemu.<br><strong>Gateway dzia\u0142a jak mened\u017cer restauracji:<\/strong> sprawdza uwierzytelnianie, wymusza limity zapyta\u0144 (rate limiting), zajmuje si\u0119 logowaniem ruchu i mo\u017ce przekierowywa\u0107 zapytania do odpowiednich us\u0142ug.<br>Dzi\u0119ki temu architektura staje si\u0119 prostsza, a zasady bezpiecze\u0144stwa s\u0105 egzekwowane w jednym, \u0142atwym do monitorowania miejscu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"bezpieczne-komunikaty-error-handling-28\">Bezpieczne komunikaty (Error Handling)<\/h3>\n\n\n\n<p>Spos\u00f3b, w jaki Twoje API informuje o b\u0142\u0119dach, ma kluczowe znaczenie dla bezpiecze\u0144stwa. Nigdy nie zwracaj pe\u0142nych \u015blad\u00f3w stosu (stack traces) ani szczeg\u00f3\u0142owych b\u0142\u0119d\u00f3w bazy danych w \u015brodowisku produkcyjnym.<\/p>\n\n\n\n<p><strong>Z\u0142y komunikat:<\/strong> &#8222;B\u0142\u0105d SQL w linii 45: tabela 'Users&#8217; nie posiada kolumny 'credit_card'&#8221; \u2013 to gotowa mapa dla hakera.<br><strong>Dobry komunikat:<\/strong> &#8222;Nieprawid\u0142owe dane wej\u015bciowe. Prosz\u0119 sprawd\u017a parametry i spr\u00f3buj ponownie&#8221;.<br><strong>Zasada:<\/strong> Informacja powinna by\u0107 pomocna dla uczciwego programisty, ale bezu\u017cyteczna dla atakuj\u0105cego, nie ujawniaj\u0105c szczeg\u00f3\u0142\u00f3w technicznych infrastruktury.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sprzatanie-po-uczcie-monitoring-logowanie-i-cykl-zycia-aplikacji-29\">Sprz\u0105tanie po uczcie: Monitoring, logowanie i cykl \u017cycia aplikacji<\/h2>\n\n\n\n<p>Ostatni etap pracy w profesjonalnej kuchni to dbanie o porz\u0105dek, sprawdzanie termin\u00f3w przydatno\u015bci produkt\u00f3w i upewnienie si\u0119, \u017ce nikt niepowo\u0142any nie kr\u0119ci si\u0119 przy spi\u017carni po zamkni\u0119ciu lokalu. W programowaniu odpowiada to monitorowaniu systemu, logowaniu zdarze\u0144 oraz dbaniu o regularne aktualizacje, co pozwala zachowa\u0107 &#8222;zdrowie&#8221; aplikacji przez d\u0142ugi czas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cyfrowe-okruszki-dlaczego-logowanie-to-nie-tylko-debugowanie-30\">Cyfrowe okruszki: Dlaczego logowanie to nie tylko debugowanie?<\/h3>\n\n\n\n<p>Wielu programist\u00f3w uwa\u017ca, \u017ce logi s\u0142u\u017c\u0105 wy\u0142\u0105cznie do naprawiania b\u0142\u0119d\u00f3w, jednak w rzeczywisto\u015bci s\u0105 one &#8222;okruszkami chleba&#8221;, kt\u00f3re pozwalaj\u0105 prze\u015bledzi\u0107 dzia\u0142ania intruza. Brak odpowiedniego logowania sprawia, \u017ce o w\u0142amaniu mo\u017cesz dowiedzie\u0107 si\u0119 z ogromnym op\u00f3\u017anieniem \u2013 rekordowe przypadki pokazuj\u0105, \u017ce bez monitoringu wycieki danych potrafi\u0142y trwa\u0107 niezauwa\u017cone przez siedem lat.<\/p>\n\n\n\n<p>Co logowa\u0107? Skup si\u0119 na nieudanych pr\u00f3bach logowania, zmianach uprawnie\u0144, b\u0142\u0119dach walidacji po stronie serwera oraz dost\u0119pie do szczeg\u00f3lnie wra\u017cliwych punkt\u00f3w styku (endpoint\u00f3w).<br><strong>Dobre praktyki:<\/strong> Logi powinny by\u0107 czytelne, zestandaryzowane i przechowywane w spos\u00f3b uniemo\u017cliwiaj\u0105cy ich \u0142atw\u0105 modyfikacj\u0119 przez hakera, kt\u00f3ry chcia\u0142by zatrze\u0107 za sob\u0105 \u015blady.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czujnosc-kucharza-monitoring-i-alertowanie-w-czasie-rzeczywistym-31\">Czujno\u015b\u0107 kucharza: Monitoring i alertowanie w czasie rzeczywistym<\/h3>\n\n\n\n<p>Sam zapis zdarze\u0144 to za ma\u0142o \u2013 musisz wiedzie\u0107, kiedy w Twojej kuchni dzieje si\u0119 co\u015b nietypowego. Systemy monitoringu pozwalaj\u0105 wykry\u0107 anomalie, zanim przerodz\u0105 si\u0119 w powa\u017cny incydent.<br><strong>Wykrywanie intruz\u00f3w:<\/strong> Narz\u0119dzia typu IDS (Intrusion Detection System) analizuj\u0105 ruch sieciowy i wywo\u0142ania systemowe, powiadamiaj\u0105c Ci\u0119 o podejrzanej aktywno\u015bci.<br><strong>Dost\u0119pno\u015b\u0107 (Availability):<\/strong> Monitoring pozwala r\u00f3wnie\u017c szybko zareagowa\u0107 na ataki typu DDoS, kt\u00f3re polegaj\u0105 na zalaniu serwera ruchem, by przesta\u0142 dzia\u0142a\u0107. Dzi\u0119ki skalowaniu w chmurze i odpowiednim alertom mo\u017cesz utrzyma\u0107 system &#8222;online&#8221; nawet pod du\u017cym obci\u0105\u017ceniem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"plan-ratunkowy-co-zrobic-gdy-danie-sie-przypali-incident-response-32\">Plan ratunkowy: Co zrobi\u0107, gdy danie si\u0119 przypali? (Incident Response)<\/h2>\n\n\n\n<p>Nawet najlepsze zabezpieczenia mog\u0105 zawie\u015b\u0107, dlatego musisz posiada\u0107 Plan Reagowania na Incydenty (IRP). Wiedza o tym, jak post\u0119powa\u0107 w momencie wykrycia w\u0142amania, skraca czas reakcji i minimalizuje straty.<br><strong>Izolacja:<\/strong> Pierwszym krokiem po wykryciu w\u0142amania powinno by\u0107 odizolowanie zainfekowanych system\u00f3w lub kontener\u00f3w, aby zapobiec rozprzestrzenianiu si\u0119 ataku.<br><strong>Naprawa i odbudowa:<\/strong> Po opanowaniu sytuacji nale\u017cy zidentyfikowa\u0107 przyczyn\u0119 b\u0142\u0119du, usun\u0105\u0107 z\u0142o\u015bliwe fragmenty kodu i odbudowa\u0107 system z bezpiecznych, &#8222;czystych&#8221; obraz\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bezpieczenstwo-jako-proces-sdlc-i-secure-by-design-33\">Bezpiecze\u0144stwo jako proces: SDLC i Secure by Design<\/h2>\n\n\n\n<p>Bezpiecze\u0144stwo nie jest &#8222;dodatkiem&#8221; wrzucanym do aplikacji na samym ko\u0144cu. Powinno by\u0107 integraln\u0105 cz\u0119\u015bci\u0105 ca\u0142ego cyklu \u017cycia oprogramowania (SDLC). Podej\u015bcie Secure by Design zak\u0142ada, \u017ce o ochronie danych my\u015blimy ju\u017c na etapie planowania, wprowadzaj\u0105c bezpieczne domy\u015blne konfiguracje i automatyzuj\u0105c kontrole bezpiecze\u0144stwa na ka\u017cdym kroku.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"podsumowanie-34\">Podsumowanie<\/h2>\n\n\n\n<p>Proces wytwarzania oprogramowania to wieloetapowa podr\u00f3\u017c, kt\u00f3ra zaczyna si\u0119 od odkrycia realnego problemu (Problem Discovery), a ko\u0144czy na dostarczeniu bezpiecznego i skalowalnego produktu. Kluczem do sukcesu nie jest samo pisanie kodu, ale podej\u015bcie &#8222;Secure by Design&#8221;, kt\u00f3re zak\u0142ada, \u017ce bezpiecze\u0144stwo jest integraln\u0105 cz\u0119\u015bci\u0105 ka\u017cdego etapu \u2013 od planowania, przez architektur\u0119, a\u017c po utrzymanie systemu. Bezpiecze\u0144stwo w IT nie jest jednorazowym wydarzeniem, lecz ci\u0105g\u0142ym procesem doskonalenia.<\/p>\n\n\n\n<p>PS. <strong>Twoja Cyfrowa Ksi\u0105\u017cka Kucharska:<\/strong> Gratulacje! W Twoich r\u0119kach znajduje si\u0119 teraz kompletny zestaw sprawdzonych przepis\u00f3w, technik i najlepszych praktyk in\u017cynierskich. Posiadasz pe\u0142n\u0105 wiedz\u0119 niezb\u0119dn\u0105 do tego, aby samodzielnie stworzy\u0107 swoj\u0105 w\u0142asn\u0105, profesjonaln\u0105 ksi\u0105\u017ck\u0119 kucharsk\u0105. Od fundament\u00f3w architektury, przez tworzenie frontendu i backendu, a\u017c po deployment i zabezpieczenia. Sta\u0142e\u015b si\u0119 szefem kuchni w\u0142asnego kodu i z tego miejsca gratuluj\u0119 Ci jeszcze raz \ud83d\udc4f. Do zobaczenia w przysz\u0142ych artyku\u0142ach, w kt\u00f3rych mo\u017ce to ja dowiem si\u0119 czego\u015b od Ciebie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"materialy-35\">Materia\u0142y<\/h2>\n\n\n\n<p>Materia\u0142y do samodzielnej nauki zwi\u0105zane z tym tematem:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/strobes.co\/blog\/understanding-the-owasp-top-10-application-vulnerabilities\/\">OWASP Top 10 podatno\u015bci aplikacji<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.cyberneticsplus.com\/outdated-and-vulnerable-the-importance-of-keeping-components-up-to-date-for-cybersecurity-9c2bdf7367c2\">Nieaktualne i podatne komponenty: znaczenie aktualizacji w cyberbezpiecze\u0144stwie<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Security\/Attacks\">Rodzaje atak\u00f3w<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/learn.sitecove.com\/how-to-guides\/website-design-and-development\/website-security-best-practices\/protecting-against-sql-injections-xss-and-csrf\">Ochrona przed SQL Injection, XSS i CSRF<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.splunk.com\/en_us\/blog\/learn\/secure-by-design.html\">Secure by Design: co oznacza SbD (bezpiecze\u0144stwo w projektowaniu oprogramowania)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.beyondtrust.com\/resources\/glossary\/least-privilege\">Czym jest zasada najmniejszych uprawnie\u0144 (Least Privilege)?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/securityscorecard.com\/blog\/what-is-the-cia-triad\/\">Czym jest triada CIA (Confidentiality, Integrity, Availability)?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/mojoauth.com\/ciam-qna\/session-cookies-vs-jwt-tokens-security\">Sesyjne cookies vs tokeny JWT<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.rippling.com\/blog\/hashing-vs-encryption\">Hashowanie vs szyfrowanie<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.redhat.com\/en\/blog\/api-security-importance-rate-limiting-policies-safeguarding-your-apis\">Bezpiecze\u0144stwo API: znaczenie limitowania zapyta\u0144 (rate limiting)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.sentinelone.com\/cybersecurity-101\/cloud-security\/docker-container-security-best-practices\/\">Bezpiecze\u0144stwo kontener\u00f3w Docker \u2013 najlepsze praktyki<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=U_tsCjOrcK4\">OWASP Top 10 \u2013 wyja\u015bnienie<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=4YOpILi9Oxs\">7 zagro\u017ce\u0144 bezpiecze\u0144stwa, kt\u00f3rych jako developer nigdy nie powiniene\u015b ignorowa\u0107<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=fqnvzu-a5SA\">Triada CIA \u2013 wyja\u015bnienie<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=hoBSjmrwF1k&amp;t=1s\">Jak dzia\u0142a uwierzytelnianie JWT<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=6WZ6S-qmtqY\">12 najwa\u017cniejszych wskaz\u00f3wek dotycz\u0105cych bezpiecze\u0144stwa API<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=4TQ_c72ffE4\">Podstawy bezpiecze\u0144stwa API<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=zt8Cocdy15c&amp;t=54s\">System Design: jak przechowywa\u0107 has\u0142a w bazie danych<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=AB0VMbvEz7g&amp;t=21s\">HTTP vs HTTPS: jak dzia\u0142a szyfrowanie SSL\/TLS<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Dotar\u0142e\u015b do ko\u0144ca tej podr\u00f3\u017cy. Pozna\u0142e\u015b fundamenty bezpiecze\u0144stwa, nauczy\u0142e\u015b si\u0119 chroni\u0107 dane, budowa\u0107 bezpieczn\u0105 infrastruktur\u0119 i reagowa\u0107 na zagro\u017cenia.Ten rozdzia\u0142 zamyka ca\u0142o\u015b\u0107, pokazuj\u0105c, jak utrzyma\u0107 system w dobrej kondycji na d\u0142u\u017csz\u0105 met\u0119 &#8211; poprzez monitoring, logowanie, reagowanie na incydenty oraz \u015bwiadome zarz\u0105dzanie cyklem \u017cycia aplikacji.Bo dobra kuchnia to nie tylko \u015bwietne przepisy i narz\u0119dzia &#8211; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":415,"menu_order":11,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-518","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/comments?post=518"}],"version-history":[{"count":5,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/518\/revisions"}],"predecessor-version":[{"id":825,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/518\/revisions\/825"}],"up":[{"embeddable":true,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/415"}],"wp:attachment":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/media?parent=518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}