{"id":520,"date":"2026-10-01T19:50:00","date_gmt":"2026-10-01T17:50:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?page_id=520"},"modified":"2026-09-25T15:07:51","modified_gmt":"2026-09-25T13:07:51","slug":"utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/","title":{"rendered":"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP)"},"content":{"rendered":"<h2>Przegl\u0105d architektury: Wektory atak\u00f3w poprzez wstrzykiwanie obcych skrypt\u00f3w<\/h2>\n<p>Wsp\u00f3\u0142czesne aplikacje internetowe i instalacje WordPressa regularnie korzystaj\u0105 ze skrypt\u00f3w JavaScript firm trzecich do analizy ruchu, zarz\u0105dzania tagami, obs\u0142ugi medi\u00f3w i automatyzacji marketingu. Ka\u017cde zewn\u0119trzne \u017ar\u00f3d\u0142o kodu wprowadzone do struktury Document Object Model (DOM) poszerza jednak powierzchni\u0119 ataku. Przej\u0119te sieci dostarczania tre\u015bci (CDN), ataki typu supply-chain na biblioteki JavaScript lub z\u0142o\u015bliwe rozszerzenia przegl\u0105darek mog\u0105 niepostrze\u017cenie wstrzykiwa\u0107 nieautoryzowane skrypty do aktywnej sesji u\u017cytkownika.<\/p>\n<p>W przypadku braku architektonicznych zabezpiecze\u0144 na poziomie nag\u0142\u00f3wk\u00f3w HTTP, przegl\u0105darki bezwarunkowo wykonuj\u0105 ka\u017cdy skrypt obecny w drzewie DOM. Stwarza to powa\u017cne ryzyko atak\u00f3w Cross-Site Scripting (XSS), skrapowania struktury DOM oraz nieautoryzowanej eksfiltracji danych (np. kradzie\u017cy ciasteczek lub wy\u0142udzania danych z formularzy). Wdro\u017cenie rygorystycznej polityki <strong>Content Security Policy (CSP)<\/strong> ustanawia niezmienny system zezwole\u0144 w przegl\u0105darce klienta, gwarantuj\u0105c, \u017ce kod mog\u0105 wykonywa\u0107 wy\u0142\u0105cznie jawnie zdefiniowane domeny i zweryfikowane skr\u00f3ty kryptograficzne.<\/p>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/csp-kontrola-obcych-skryptow-pl.png\" width=\"1120\" height=\"560\" alt=\"Przebieg Content Security Policy: nag\u0142\u00f3wek z Nginxa i WordPressa, oceniany przez przegl\u0105dark\u0119 na zasoby dozwolone i zablokowane\"><figcaption>Jak dzia\u0142a polityka: nag\u0142\u00f3wek pochodzi z Nginxa, WordPress s\u0142u\u017cy jako zapas. Przegl\u0105darka por\u00f3wnuje nast\u0119pnie ka\u017cdy zas\u00f3b z dyrektywami \u2014 <code>googletagmanager.com<\/code> jest na li\u015bcie dozwolonych, wstrzykni\u0119te skrypty i osadzenia <code>object<\/code> nie.<\/figcaption><\/figure>\n<h2>Instrukcja wdro\u017cenia krok po kroku<\/h2>\n<h3>Krok 1: Przeprowadzenie pe\u0142nego audytu skrypt\u00f3w i punkt\u00f3w ko\u0144cowych<\/h3>\n<p>Przed wdro\u017ceniem blokuj\u0105cego nag\u0142\u00f3wka CSP konieczne jest skatalogowanie wszystkich uzasadnionych zale\u017cno\u015bci domenowych. W standardowym \u015brodowisku WordPress v7.0.2 wyposa\u017conym w zaawansowane zarz\u0105dzanie tagami i analityk\u0119 server-side, audyt wykazuje zazwyczaj nast\u0119puj\u0105ce kluczowe dyrektywy:<\/p>\n<ul>\n<li><code>default-src 'self'<\/code> \u2013 Ogranicza \u0142adowanie zasob\u00f3w domy\u015blnych wy\u0142\u0105cznie do domeny g\u0142\u00f3wnej.<\/li>\n<li><code>script-src 'self'<\/code> \u2013 Zezwala na wykonywanie skrypt\u00f3w hostowanych na w\u0142asnym serwerze.<\/li>\n<li><code>connect-src 'self'<\/code> \u2013 Ogranicza po\u0142\u0105czenia REST API, Fetch i XHR do zaufanych punkt\u00f3w analitycznych.<\/li>\n<li><code>img-src 'self' data:<\/code> \u2013 Dopuszcza \u0142adowanie lokalnych grafik i osadzonych schemat\u00f3w URI base64.<\/li>\n<\/ul>\n<h3>Krok 2: Projektowanie polityki CSP o minimalnych uprawnieniach<\/h3>\n<p>W celu zablokowania obcych skrypt\u00f3w \u015bledz\u0105cych przy jednoczesnym zachowaniu sprawno\u015bci autoryzowanych system\u00f3w (takich jak Google Tag Manager, GA4, Matomo lub w\u0142asny punkt ko\u0144cowy Server-Side GTM), nale\u017cy precyzyjnie okre\u015bli\u0107 bia\u0142e listy domen. Bezpieczna polityka bazowa dla \u015brodowisk analitycznych wygl\u0105da nast\u0119puj\u0105co:<\/p>\n<pre><code>default-src 'self';\nscript-src 'self' 'unsafe-inline' https:\/\/www.googletagmanager.com https:\/\/cdn.matomo.cloud;\nimg-src 'self' data: https:\/\/www.google-analytics.com https:\/\/www.googletagmanager.com;\nconnect-src 'self' https:\/\/www.google-analytics.com https:\/\/region1.google-analytics.com https:\/\/matomo.cloud https:\/\/tracking.lukaswojcik.com;\nframe-src 'self' https:\/\/www.youtube.com;\nobject-src 'none';\nbase-uri 'self';\nform-action 'self';<\/code><\/pre>\n<p><em>Uwaga:<\/em> Stosowanie parametru <code>'unsafe-inline'<\/code> w dyrektywie <code>script-src<\/code> powinno w \u015brodowiskach o najwy\u017cszym rygorze bezpiecze\u0144stwa zosta\u0107 zast\u0105pione przez kryptograficzne warto\u015bci nonce lub skr\u00f3ty SHA-256.<\/p>\n<h3>Krok 3: Wdro\u017cenie na poziomie serwera w konfiguracji Nginx<\/h3>\n<p>Ze wzgl\u0119d\u00f3w wydajno\u015bciowych nag\u0142\u00f3wki CSP powinny by\u0107 wysy\u0142ane bezpo\u015brednio przez serwer WWW, a nie generowane w warstwie aplikacji PHP. Umieszczenie polityki w bloku serwera SSL programu Nginx zapewnia jej natychmiastowe egzekwowanie przed przetworzeniem kodu PHP:<\/p>\n<pre><code># \/etc\/nginx\/sites-available\/lukaswojcik.com.conf\nserver {\n    listen 443 ssl http2;\n    server_name www.lukaswojcik.com lukaswojcik.com;\n\n    # Wymuszenie rygorystycznego nag\u0142\u00f3wka CSP\n    add_header Content-Security-Policy \"default-src 'self'; script-src 'self' 'unsafe-inline' https:\/\/www.googletagmanager.com https:\/\/cdn.matomo.cloud; img-src 'self' data: https:\/\/www.google-analytics.com https:\/\/www.googletagmanager.com; connect-src 'self' https:\/\/www.google-analytics.com https:\/\/region1.google-analytics.com https:\/\/matomo.cloud https:\/\/tracking.lukaswojcik.com; frame-src 'self' https:\/\/www.youtube.com; object-src 'none'; base-uri 'self'; form-action 'self';\" always;\n    \n    add_header X-Content-Type-Options \"nosniff\" always;\n    add_header X-Frame-Options \"SAMEORIGIN\" always;\n}<\/code><\/pre>\n<p>Po modyfikacji konfiguracji serwera Nginx wymagane jest sprawdzenie sk\u0142adni oraz bezkolizyjne prze\u0142adowanie us\u0142ugi:<\/p>\n<pre><code>nginx -t &amp;&amp; systemctl reload nginx<\/code><\/pre>\n<h3>Krok 4: Zabezpieczenie na poziomie aplikacji przez functions.php<\/h3>\n<p>W przypadku braku dost\u0119pu administracyjnego do konfiguracji serwera Nginx, identyczny nag\u0142\u00f3wek CSP mo\u017ce by\u0107 wysy\u0142any za po\u015brednictwem PHP podczas cyklu \u017c\u0105dania WordPressa poprzez wdro\u017cenie poni\u017cszego kodu do pliku <code>functions.php<\/code> aktywnego motywu:<\/p>\n<pre><code>\/**\n * Wdro\u017cenie nag\u0142\u00f3wka Content Security Policy\n * Cel: WordPress v7.0.2\n *\/\nadd_action( 'send_headers', 'lw_enforce_content_security_policy' );\n\nfunction lw_enforce_content_security_policy() {\n    if ( ! is_admin() ) {\n        $csp = \"default-src 'self'; \" .\n               \"script-src 'self' 'unsafe-inline' https:\/\/www.googletagmanager.com https:\/\/cdn.matomo.cloud; \" .\n               \"img-src 'self' data: https:\/\/www.google-analytics.com https:\/\/www.googletagmanager.com; \" .\n               \"connect-src 'self' https:\/\/www.google-analytics.com https:\/\/region1.google-analytics.com https:\/\/matomo.cloud https:\/\/tracking.lukaswojcik.com; \" .\n               \"frame-src 'self' https:\/\/www.youtube.com; \" .\n               \"object-src 'none'; \" .\n               \"base-uri 'self'; \" .\n               \"form-action 'self';\";\n        \n        header( 'Content-Security-Policy: ' . $csp );\n    }\n}<\/code><\/pre>\n<h3>Krok 5: Kontrola jako\u015bci i testowanie w trybie Report-Only<\/h3>\n<p>Przed wdro\u017ceniem regu\u0142 blokuj\u0105cych w \u015brodowisku produkcyjnym zaleca si\u0119 tymczasowe zastosowanie nag\u0142\u00f3wka <code>Content-Security-Policy-Report-Only<\/code>. Pozwala to na rejestrowanie narusze\u0144 w konsoli przegl\u0105darki bez wstrzymywania wykonywania skrypt\u00f3w.<\/p>\n<p>Weryfikacj\u0119 nale\u017cy przeprowadzi\u0107 przy u\u017cyciu narz\u0119dzi deweloperskich (F12):<\/p>\n<ol>\n<li><strong>Weryfikacja nag\u0142\u00f3wka sieciowego:<\/strong> Otwarcie zak\u0142adki Network, od\u015bwie\u017cenie widoku strony i potwierdzenie obecno\u015bci kompletnego ci\u0105gu <code>Content-Security-Policy<\/code> w odpowiedzi HTTP.<\/li>\n<li><strong>Wykrywanie anomalii w konsoli:<\/strong> Monitoring zak\u0142adki Console. Nieautoryzowane skrypty \u015bledz\u0105ce natychmiast wygeneruj\u0105 czerwone komunikaty o b\u0142\u0119dach CSP. Skrypty tre\u015bci (content scripts) rozszerze\u0144 przegl\u0105darki nie podlegaj\u0105 natomiast polityce CSP strony; sprawdzane jest tylko to, co wstawiaj\u0105 do strony jako elementy script.<\/li>\n<li><strong>Walidacja punkt\u00f3w \u015bledz\u0105cych:<\/strong> Sprawdzenie, czy zapytania analityczne kierowane do w\u0142asnej subdomeny server-side zwracaj\u0105 kod HTTP 200 bez blokad ze strony mechanizm\u00f3w bezpiecze\u0144stwa.<\/li>\n<\/ol>\n<h2>Podsumowanie i mierzalna warto\u015b\u0107 dodana<\/h2>\n<p><strong>Co da si\u0119 osi\u0105gn\u0105\u0107 dzi\u0119ki instrukcji:<\/strong> Niekontrolowane wykonywanie dowolnych skrypt\u00f3w JavaScript w drzewie DOM zostaje zast\u0105pione przez kryptograficznie egzekwowan\u0105 list\u0119 zaufanych domen, zarz\u0105dzan\u0105 bezpo\u015brednio przez silnik bezpiecze\u0144stwa przegl\u0105darki.<\/p>\n<p><strong>Wynikaj\u0105ca z tego warto\u015b\u0107 dodana:<\/strong><\/p>\n<ul>\n<li><strong>Ochrona przed atakami Supply-Chain:<\/strong> Z\u0142amane zewn\u0119trzne biblioteki JavaScript oraz obce skrypty s\u0105 natychmiast blokowane przed uruchomieniem lub pr\u00f3b\u0105 eksfiltracji danych.<\/li>\n<li><strong>Zgodno\u015b\u0107 z RODO i wymogami prywatno\u015bci:<\/strong> Nieautoryzowane piksele \u015bledz\u0105ce oraz tagi doczepiane s\u0105 systemowo wstrzymywane przed nawi\u0105zaniem po\u0142\u0105cze\u0144 z zewn\u0119trznymi sieciami reklamowymi.<\/li>\n<li><strong>Zabezpieczenie formularzy i sesji:<\/strong> Ograniczenia dyrektyw <code>connect-src<\/code> oraz <code>form-action<\/code> uniemo\u017cliwiaj\u0105 przechwytywanie danych wej\u015bciowych z formularzy na wszystkich podstronach WordPressa.<\/li>\n<\/ul>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Dlaczego na niekt\u00f3rych adresach brakuje CSP z konfiguracji Nginx?<\/h3>\n<p>Z powodu zasady dziedziczenia add_header. Nginx przenosi dyrektywy add_header z bloku server tylko do tych blok\u00f3w location, kt\u00f3re same nie zawieraj\u0105 \u017cadnej dyrektywy add_header. Je\u015bli blok location dla obraz\u00f3w, czcionek albo PHP ustawia w\u0142asny nag\u0142\u00f3wek, na przyk\u0142ad Cache-Control, znikaj\u0105 w nim wszystkie nag\u0142\u00f3wki z bloku server, \u0142\u0105cznie z Content-Security-Policy, X-Content-Type-Options i X-Frame-Options.<\/p>\n<p>Cz\u0119sto d\u0142ugo pozostaje to niezauwa\u017cone, bo kontrola z kroku 5 odbywa si\u0119 zwykle na stronie HTML. Bezpieczniejsza jest pr\u00f3bka dla ka\u017cdego bloku location, obejmuj\u0105ca tak\u017ce obrazy, skrypty i adresy obs\u0142ugiwane przez PHP.<\/p>\n<p>Rozwi\u0105zaniem jest powt\u00f3rzenie nag\u0142\u00f3wk\u00f3w w ka\u017cdym bloku location, kt\u00f3ry ma w\u0142asne wiersze add_header, najpro\u015bciej przez wsp\u00f3lny plik do\u0142\u0105czany dyrektyw\u0105 include.<\/p>\n<h3>Co si\u0119 dzieje, gdy CSP wysy\u0142aj\u0105 jednocze\u015bnie Nginx i functions.php?<\/h3>\n<p>Obowi\u0105zuj\u0105 wtedy obie polityki. Przegl\u0105darka nie scala kilku nag\u0142\u00f3wk\u00f3w Content-Security-Policy w jedn\u0105 polityk\u0119, lecz sprawdza ka\u017cdy zas\u00f3b wzgl\u0119dem ka\u017cdej z nich, a \u0142aduje tylko to, na co zezwalaj\u0105 wszystkie. Domena wpisana tylko w jednej z dw\u00f3ch wersji pozostaje wi\u0119c zablokowana. \u0141atwo o to, gdy \u017ar\u00f3d\u0142o zostaje dopisane tylko w jednym miejscu, na przyk\u0142ad w konfiguracji Nginx, ale nie w functions.php.<\/p>\n<p>Z drugiej strony mo\u017ce zabrakn\u0105\u0107 nag\u0142\u00f3wka z functions.php, cho\u0107 kod jest poprawny. Pami\u0119\u0107 podr\u0119czna stron, kt\u00f3ra wydaje gotowe pliki HTML bezpo\u015brednio z serwera WWW bez uruchamiania PHP, dostarcza je bez tego nag\u0142\u00f3wka, o ile nie zapisuje razem z nimi nag\u0142\u00f3wk\u00f3w. Przy ustawianiu polityki przez PHP warto wi\u0119c sprawdzi\u0107 tak\u017ce stron\u0119 wydan\u0105 z pami\u0119ci podr\u0119cznej, a nie tylko \u015bwie\u017co wygenerowan\u0105.<\/p>\n<h3>Jak zbiera\u0107 naruszenia, kt\u00f3re wyst\u0119puj\u0105 tylko u prawdziwych odwiedzaj\u0105cych?<\/h3>\n<p>Przez adres zg\u0142osze\u0144 w polityce. Konsola pokazuje naruszenia tylko w przegl\u0105darce osoby, kt\u00f3ra akurat sprawdza; z dyrektyw\u0105 report-uri albo nowsz\u0105 report-to razem z nag\u0142\u00f3wkiem Reporting-Endpoints przegl\u0105darki odwiedzaj\u0105cych wysy\u0142aj\u0105 ka\u017cde naruszenie jako JSON do punktu ko\u0144cowego prowadzonego przez witryn\u0119, tak\u017ce w trybie Report-Only. Takie zg\u0142oszenia zawieraj\u0105 te\u017c szum, na przyk\u0142ad z rozszerze\u0144 przegl\u0105darki, dlatego warto analizowa\u0107 je wed\u0142ug \u017ar\u00f3d\u0142a, a nie patrze\u0107 tylko na ich liczb\u0119.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/owasp.org\/www-project-top-ten\/\" target=\"_blank\" rel=\"noopener noreferrer\">OWASP Top 10<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress functions.php \/ hooks reference<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Techniczny przewodnik po zabezpieczaniu instalacji WordPress v7.0.2 przed nieautoryzowanym wstrzykiwaniem skrypt\u00f3w i pikseli \u015bledz\u0105cych poprzez rygorystyczne nag\u0142\u00f3wki Content Security Policy (CSP).<\/p>\n","protected":false},"author":1,"featured_media":18851,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124],"tags":[92271,92044,92238,92077,92286],"class_list":["post-520","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-data-privacy-pl","tag-javascript-pl","tag-tracking-pl","tag-tutorial-pl","tag-web-security-pl","tag-wordpress-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP) | Lukas Wojcik<\/title>\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\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP) | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Techniczny przewodnik po zabezpieczaniu instalacji WordPress v7.0.2 przed nieautoryzowanym wstrzykiwaniem skrypt\u00f3w i pikseli \u015bledz\u0105cych poprzez rygorystyczne nag\u0142\u00f3wki Content Security Policy (CSP).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-01T17:50:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-520-utwardzanie-infrastruktury-interneto-k.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=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP)\",\"datePublished\":\"2026-10-01T17:50:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/\"},\"wordCount\":1187,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-520-utwardzanie-infrastruktury-interneto-k.png\",\"keywords\":[\"JavaScript\",\"Tracking\",\"Tutorial\",\"Web Security\",\"WordPress\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/\",\"name\":\"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP) | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-520-utwardzanie-infrastruktury-interneto-k.png\",\"datePublished\":\"2026-10-01T17:50:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-520-utwardzanie-infrastruktury-interneto-k.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-520-utwardzanie-infrastruktury-interneto-k.png\",\"width\":1200,\"height\":630,\"caption\":\"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/data-privacy-pl\\\/tutorials-pl-data-privacy-pl\\\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP)\"}]},{\"@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\":\"Lukas Wojcik\",\"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\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP) | Lukas Wojcik","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\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/","og_locale":"en_US","og_type":"article","og_title":"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP) | Lukas Wojcik","og_description":"Techniczny przewodnik po zabezpieczaniu instalacji WordPress v7.0.2 przed nieautoryzowanym wstrzykiwaniem skrypt\u00f3w i pikseli \u015bledz\u0105cych poprzez rygorystyczne nag\u0142\u00f3wki Content Security Policy (CSP).","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-01T17:50:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-520-utwardzanie-infrastruktury-interneto-k.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP)","datePublished":"2026-10-01T17:50:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/"},"wordCount":1187,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-520-utwardzanie-infrastruktury-interneto-k.png","keywords":["JavaScript","Tracking","Tutorial","Web Security","WordPress"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/","name":"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP) | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-520-utwardzanie-infrastruktury-interneto-k.png","datePublished":"2026-10-01T17:50:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-520-utwardzanie-infrastruktury-interneto-k.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-520-utwardzanie-infrastruktury-interneto-k.png","width":1200,"height":630,"caption":"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP)"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/data-privacy-pl\/tutorials-pl-data-privacy-pl\/utwardzanie-infrastruktury-internetowej-kontrola-obcych-skryptow-za-pomoca\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Utwardzanie infrastruktury internetowej: Kontrola obcych skrypt\u00f3w za pomoc\u0105 Content Security Policy (CSP)"}]},{"@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":"Lukas Wojcik","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":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/520","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=520"}],"version-history":[{"count":5,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/520\/revisions"}],"predecessor-version":[{"id":20979,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/520\/revisions\/20979"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/18851"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}