Skip to main content
Powrót do bloga

Przewodnik SEO Krok 7: Bezpieczeństwo — Podstawa, której Google Oczekuje w 2026

·12 min czytania·przez LANGR SEO

Przewodnik SEO Krok 7: Bezpieczeństwo

To jest Krok 7 z 13-krokowego przewodnika po SEO. Bezpieczeństwo to nie tylko ochrona użytkowników — bezpośrednio wpływa na pozycje w wynikach wyszukiwania. Google wykorzystuje HTTPS jako sygnał rankingowy od 2014 roku, a oczekiwania tylko wzrosły.


Większość właścicieli stron traktuje bezpieczeństwo jako binary — "Mamy SSL, więc jesteśmy bezpieczni." W rzeczywistości Google ocenia dziesiątki sygnałów bezpieczeństwa. Strony z odpowiednimi nagłówkami bezpieczeństwa, ważnymi certyfikatami i bez mieszanej zawartości zajmują wyższe pozycje niż strony z tylko podstawowym certyfikatem SSL — przy wszystkich innych czynnikach równych.

Dobra wiadomość: większość poprawek bezpieczeństwa to jednorazowe konfiguracje. Ustaw je raz, a będą chronić Twoje pozycje na stałe.

Konfiguracja SSL

SSL (technicznie TLS) szyfruje połączenie między Twoim serwerem a odwiedzającymi. Od 2014 roku Google wyraźnie potwierdziło HTTPS jako sygnał rankingowy. W 2026 roku brak HTTPS to nie tylko problem rankingowy — Chrome oznacza strony HTTP jako "Niebezpieczne" w pasku adresu, niszcząc zaufanie użytkowników.

Wymagania dotyczące prawidłowego SSL:

| Wymaganie | Dlaczego | Jak Sprawdzić | |-----------|----------|----------------| | Ważny certyfikat | Wygasły = ostrzeżenie przeglądarki = utraceni użytkownicy | Sprawdź datę ważności | | Pełny łańcuch | Niekompletne łańcuchy nie działają na niektórych urządzeniach | Test SSL Labs | | TLS 1.2+ | Starsze wersje mają znane luki | Test SSL Labs | | Brak SHA-1 | Przestarzałe, przeglądarki je odrzucają | Szczegóły certyfikatu | | Pokrycie SAN | www i non-www muszą być objęte | Szczegóły certyfikatu | | Automatyczne odnawianie | Zapobiega katastrofom związanym z wygaszeniem | Konfiguracja Let's Encrypt / dostawcy |

Skoring SSL:

100% = Ważny certyfikat + Pełny łańcuch + TLS 1.3 + Silny szyfr + Automatyczne odnawianie
  0% = Wygasły lub brakujący certyfikat

Typowe błędy związane z SSL:

  1. Certyfikat wygasa bez powiadomienia — Ustaw monitoring (Krok 6) co najmniej 30 dni przed wygaśnięciem
  2. Niekompletny łańcuch certyfikatów — Serwer musi wysyłać certyfikaty pośrednie, a nie tylko końcowe
  3. Mieszana zawartość — Strona HTTPS ładowana zasobami HTTP (obrazy, skrypty, style)
  4. Pętle przekierowań — Cykl HTTP → HTTPS → HTTP spowodowany niewłaściwie skonfigurowanym CDN/proxy
  5. Niezgodność non-www z www — Certyfikat pokrywa jedną, ale nie drugą

Szybki sukces: Uruchom swoją domenę przez SSL Labs (ssllabs.com/ssltest). Cokolwiek poniżej oceny "A" ma problemy do rozwiązania. Większość dostawców hostingu naprawia to jednym kliknięciem.

Nagłówki bezpieczeństwa

Nagłówki bezpieczeństwa to nagłówki odpowiedzi HTTP, które instruują przeglądarki jak zachować się podczas ładowania Twojej witryny. Zapobiegają całym kategoriom ataków — a roboty Google sprawdzają ich obecność.

Podstawowe nagłówki bezpieczeństwa:

Content-Security-Policy (CSP)

CSP to najsilniejszy nagłówek bezpieczeństwa. Informuje przeglądarki, które zasoby (skrypty, style, obrazy, czcionki) mogą być ładowane na Twoich stronach.

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; frame-ancestors 'none';

Czego CSP zapobiega:

  • Ataki XSS (cross-site scripting)
  • Ataki polegające na wstrzykiwaniu danych
  • Klikanie w fałszywe linki (via frame-ancestors)
  • Nieautoryzowane wykonywanie skryptów (kopacze kryptowalut, wstrzykiwacze reklam)

Strategia wdrażania CSP:

  1. Zacznij od Content-Security-Policy-Report-Only (rejestruje naruszenia bez blokowania)
  2. Monitoruj raporty przez 1-2 tygodnie
  3. Wprowadź białą listę legalnych źródeł
  4. Przełącz na tryb egzekwowania
  5. Dodaj report-uri lub report-to do ciągłego rejestrowania naruszeń

X-Frame-Options

Zapobiega osadzaniu Twojej witryny w ramkach (prawa przeciwko klikaniu w fałszywe linki).

X-Frame-Options: DENY

Lub, jeśli potrzebujesz zezwolić na osadzanie z tej samej domeny:

X-Frame-Options: SAMEORIGIN

X-Content-Type-Options

Zapobiega przeglądarkom przed sniffingiem typu MIME (interpretowaniem plików jako innego typu niż zadeklarowany).

X-Content-Type-Options: nosniff

To jedna linia kodu, która zapobiega atakom, gdzie plik .jpg zawiera ukryty JavaScript, który przeglądarka może wykonać.

Referrer-Policy

Kontroluje, ile informacji o referrerze jest wysyłane, gdy użytkownicy klikają linki z Twojej witryny.

Referrer-Policy: strict-origin-when-cross-origin

To wysyła pełny adres URL dla żądań z tej samej domeny, ale tylko origin (domena) dla żądań międzydomenowych. Równoważy potrzeby analityczne z prywatnością.

Permissions-Policy

Kontroluje, które funkcje przeglądarki (kamera, mikrofon, geolokalizacja, itp.) mogą być używane na Twojej stronie.

Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()

Dezaktywując funkcje, których nie używasz, zapobiegasz ich nadużywaniu przez zewnętrzne skrypty.

Przykład implementacji nagłówków (Next.js):

// next.config.js
module.exports = {
  async headers() {
    return [{
      source: '/(.*)',
      headers: [
        { key: 'X-Content-Type-Options', value: 'nosniff' },
        { key: 'X-Frame-Options', value: 'SAMEORIGIN' },
        { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
        { key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' },
        { key: 'Strict-Transport-Security', value: 'max-age=31536000; includeSubDomains; preload' },
      ]
    }]
  }
}

Implementacja nagłówków (Apache .htaccess):

Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Implementacja nagłówków (Nginx):

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Szybki sukces: Dodaj wszystkie 5 nagłówków powyżej do konfiguracji serwera. To zajmie 5 minut i natychmiast poprawi Twoje bezpieczeństwo w każdym narzędziu skanującym.

HSTS Preload

HTTP Strict Transport Security (HSTS) informuje przeglądarki, aby zawsze używały HTTPS dla Twojej domeny — nawet przed pierwszym żądaniem. Bez HSTS, pierwsza wizyta na Twojej stronie może nadal używać HTTP (narażona na przechwycenie) zanim nastąpi przekierowanie do HTTPS.

Nagłówek HSTS:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Trzy dyrektywy:

| Dyrektywa | Znaczenie | |-----------|-----------| | max-age=31536000 | Zapamiętaj to na 1 rok (w sekundach) | | includeSubDomains | Zastosuj również do wszystkich subdomen | | preload | Poproś o włączenie do list preładowania przeglądarek |

Lista preładowania HSTS:

Ostateczna ochrona HSTS. Przeglądarki mają wbudowaną listę domen, które zawsze muszą używać HTTPS. Zgłoszenie swojej domeny do hstspreload.org oznacza:

  • Użytkownicy po raz pierwszy otrzymują HTTPS od razu (brak przekierowania HTTP → HTTPS)
  • Niemożliwe dla atakujących, aby obniżyć połączenia
  • Trwałe (trudno usunąć po zgłoszeniu)

Wymagania dla preładowania HSTS:

  1. Ważny certyfikat HTTPS
  2. Przekierowaniu całego HTTP do HTTPS (w tym subdomen)
  3. Nagłówek HSTS z max-age >= 31536000
  4. Nagłówek HSTS zawiera includeSubDomains
  5. Nagłówek HSTS zawiera preload
  6. Wszystkie subdomeny muszą obsługiwać HTTPS

Ostrzeżenie: Zgłaszaj do preload tylko wtedy, gdy WSZYSTKIE Twoje subdomeny obsługują HTTPS. Dyrektywa includeSubDomains oznacza, że każda subdomena tylko HTTP stanie się niedostępna.

Szybki sukces: Jeśli już masz HTTPS na wszystkich subdomenach, dodaj pełny nagłówek HSTS i zgłoś do hstspreload.org. Procesowanie trwa kilka tygodni, ale ochrona jest trwała.

Skanowanie podatności

Zautomatyzowane skanowanie podatności identyfikuje znane problemy bezpieczeństwa w Twoim systemie zanim zostaną one wykorzystane przez atakujących.

Co sprawdza skanowanie podatności:

  • Nieaktualne oprogramowanie: WordPress, wtyczki, biblioteki JavaScript z znanymi CVE
  • Ujawioną zawartość: .env, .git, wp-config.php, zrzuty baz danych
  • Wycieki informacji: Nagłówki wersji serwera, tryb debugowania, stosy
  • Domyślne dane uwierzytelniające: Strony admina bez autoryzacji, domyślne hasła
  • Otwarte porty/usługi: Niepotrzebne usługi ujawnione w internecie
  • Punkty wstrzykiwania: Formularze bez ochrony CSRF, niezweryfikowane dane wejściowe

Typowe podatności według platformy:

| Platforma | Największa podatność | Naprawa | |-----------|----------------------|---------| | WordPress | Nieaktualne wtyczki | Automatyczna aktualizacja + WAF | | Shopify | Uprawnienia aplikacji trzecich | Audyt listy aplikacji co kwartał | | Next.js | Ujawniowane trasy API | Middleware autoryzacji + ograniczenie tempa | | Statyczne strony | Błędna konfiguracja CDN | Przejrzenie reguł pamięci podręcznej | | Niestandardowe | Wstrzykiwanie SQL | Parametryzowane zapytania |

Częstotliwość skanowania:

  • Codzienne: Zautomatyzowane skanowanie powierzchni (SSL, nagłówki, ujawnione pliki)
  • Cotygodniowe: Sprawdzenie podatności zależności (npm audit, skaner wtyczek WordPressa)
  • Comiesięczne: Głębokie skanowanie z autoryzowanym testowaniem
  • Po każdym wdrożeniu: Sprawdzenie regresji

Szybki sukces: Uruchom npm audit (Node.js) lub sprawdź swoją listę wtyczek CMS w poszukiwaniu nieaktualnych komponentów. Napraw krytyczne/znaczne problemy natychmiast.

Mieszana zawartość

Mieszana zawartość występuje, gdy strona HTTPS ładuje zasoby (obrazy, skrypty, arkusze stylów, ramki) przez HTTP. To częściowo łamie szyfrowanie i powoduje ostrzeżenia przeglądarki.

Typy mieszanej zawartości:

| Typ | Powagi | Przykład | Zachowanie przeglądarki | |-----|--------|----------|-------------------------| | Aktywna | Wysoka | Skrypt HTTP, iframe, CSS | Zablokowane domyślnie | | Pasywna | Średnia | Obraz HTTP, wideo, audio | Załadowane z ostrzeżeniem |

Aktywna mieszana zawartość jest blokowana przez nowoczesne przeglądarki — co oznacza, że Twoje skrypty i style po prostu się nie załadują. Pasywna mieszana zawartość ładowana jest, ale z ostrzeżeniem o bezpieczeństwie.

Jak znaleźć mieszaną zawartość:

  1. Otwórz Chrome DevTools → Konsola
  2. Sprawdź ostrzeżenia "Mixed Content"
  3. Alternatywnie, przeskanuj za pomocą narzędzia do skanowania (Screaming Frog, LANGR)

Typowe źródła mieszanej zawartości:

  • Hardcodowane URL-e http:// w treści (posty na blogu, opisy produktów)
  • Widgety zewnętrzne ładujące zasoby HTTP
  • Osadzone treści (stare embed’y YouTube, widgety mediów społecznościowych)
  • CSS background-image z URL-ami HTTP
  • Czcionki ładowane przez HTTP

Naprawa mieszanej zawartości:

<!-- Złe -->
<img src="http://example.com/image.jpg" />

<!-- Dobre -->
<img src="https://example.com/image.jpg" />

<!-- Najlepsze (z równoważeniem protokołu, dostosowuje się do protokołu strony) -->
<img src="//example.com/image.jpg" />

Naprawa bazy danych (WordPress):

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://yourdomain.com', 'https://yourdomain.com');

Szybki sukces: Otwórz swoją stronę główną w Chrome, naciśnij F12, sprawdź zakładkę Konsola w poszukiwaniu ostrzeżeń związanych z mieszaną zawartością. Napraw wszelkie, które się pojawią — są one bezpośrednio widoczne dla Google.

Ryzyko związane z skryptami zewnętrznymi

Każdy zewnętrzny skrypt, który ładujesz, jest potencjalnym zagrożeniem dla bezpieczeństwa (i wydajności). Skrypty zewnętrzne mogą:

  • Zostać skompromitowane (ataki na łańcuch dostaw)
  • Śledzić Twoich użytkowników bez zgody (naruszenie RODO)
  • Spowolnić Twoją stronę (blokowanie renderowania, opóźnienie sieci)
  • Złamać funkcjonalność (aktualizacje wersji, awarie)
  • Wstrzyknąć niechcianą treść (błędne skrypty reklamowe)

Audytuj swoje skrypty zewnętrzne:

| Skrypt | Konieczny? | Poziom ryzyka | Alternatywa | |--------|-----------|---------------|-------------| | Google Analytics | Często tak | Niskie | Śledzenie po stronie serwera | | Widgety czatu | Może | Średnie | Rozwiązania hostowane samodzielnie | | Przycisk udostępniania w mediach społecznościowych | Rzadko | Średnie | Statyczne linki udostępniania | | Testy A/B | Czasami | Wysokie | Testy po stronie serwera | | Piksele retargetowania | Decyzja biznesowa | Wysokie | Dane pierwszej strony | | Fonty CDN | Wygodne | Niskie | Samodzielne hostowane czcionki |

Łagodzenie ryzyka dla niezbędnych skryptów zewnętrznych:

  1. Integralność podzasobów (SRI): Weryfikacja hasha zapobiega ładowaniu skryptów z manipulacjami
<script src="https://cdn.example.com/lib.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxAE+sO0..."
        crossorigin="anonymous"></script>
  1. Ograniczenia CSP: Zezwól tylko na skrypty z znanych domen
  2. Osadzone ramki w sandboxie: Izolacja widgetów zewnętrznych
  3. Regularne audyty: Kwartalne przeglądy wszystkich zasobów zewnętrznych
  4. Monitorowanie: Powiadamiaj o nowych zewnętrznych domenach pojawiających się na Twoich stronach

Szybki sukces: Sporządź listę wszystkich tagów