Wpisy

nagłówki bezpieczeństwa

Nagłówki bezpieczeństwa strony internetowej

Nagłówki bezpieczeństwa – wprowadzenie

Czasem poszukujemy informacji na temat poprawy poziomu bezpieczeństwa poszczególnych obszarów naszego życia i otaczającej nas rzeczywistości. Jednym z tych obszarów może być posiadana przez nas witryna internetowa. W tym artykule postaram się w prosty sposób opisać, jak zadbać o nagłówki bezpieczeństwa – bez zagłębiania się w szczegóły techniczne, tak aby każdy użytkownik WordPressa mógł sobie z tym poradzić.

Zacznijmy od podstawowych informacji – jak wiemy, każda strona komunikuje się z użytkownikiem przy użyciu protokołu HTTP (ang. Hypertext Transfer Protocol) – protokół przesyłania dokumentów hipertekstowych. Zazwyczaj są one używane do przekazywania informacji technicznych, takich jak sposób, w jaki przeglądarka powinna buforować zawartość, jaki jest typ zawartości, oprogramowanie działające na serwerze i wiele, wiele więcej. Obecnie nagłówki HTTP wykorzystuje się do przekazywania zasad bezpieczeństwa do przeglądarki. Dzięki przekazywaniu zasad bezpieczeństwa z powrotem do klienta w ten sposób, hosty mogą zapewnić znacznie bezpieczniejsze przeglądanie stron przez odwiedzających, a także zmniejszyć ryzyko dla wszystkich zainteresowanych.

Zabezpieczenie witryny – certyfikat SSL

Stronę internetową możemy zabezpieczyć certyfikatem SSL. Możemy użyć certyfikatów komercyjnych lub bezpłatnego certyfikatu Let’s Encrypt. W repozytorium WordPressa znajdziemy wtyczki, które pomagają zainstalować certyfikat SSL. Jedną z nich jest Really Simple SSL. Można to zrobić również bez instalacji wtyczki, ale jest to zadanie bardziej złożone. Po instalacji certyfikatu SSL podstawowy nagłówek komunikacji HTTP przyjmuje wartość HTTPS. Bezpłatna wersja wtyczki, o której wyżej wspomniałem poinformuje nas między innymi, że zalecane jest zabezpieczenie dodatkowych nagłówków – w tym przypadku opcje dostępne w wersji premium. Nie musimy od razu kupować wersji premium, gdyż możemy samodzielnie odpowiednio skonfigurować ustawienia w swojej witrynie.

Przedstawione poniżej nagłówki dają przeglądarce więcej informacji o tym, jak chcesz, aby zachowywała się w odniesieniu do Twojej witryny. Mogą one być używane do przekazywania zasad bezpieczeństwa, ustawiania opcji konfiguracyjnych i wyłączania funkcji przeglądarki, których nie chcesz włączać dla swojej witryny. Aby je wdrożyć, możesz dodać nagłówki wymienione poniżej do pliku .htaccess swojej witryny. Zaloguj się przez FTP do swojej witryny i znajdź plik .htaccess. Jeśli go nie ma, możesz go utworzyć w notatniku Windowsa, choć ja preferuję program Notepad++ i wyślij go na serwer. Pamiętajmy, że najważniejsze jest bezpieczeństwo naszej witryny, więc przed jakąkolwiek modyfikacją pliku .htaccess należy bezwzględnie utworzyć jego kopię, aby w przypadku niepowodzenia wrócić do wersji sprzed zmian. Po skonfigurowaniu każdego nagłówka, sprawdź go, używając skanera https://securityheaders.com/

HTTP Strict Transport Security

Konfiguracja tego nagłówka wymaga wcześniejszego zainstalowania certyfikatu SSL. Następnie przy użyciu wyżej wymienionej wtyczki następuje przekierowanie z przeglądania stron przez HTTP na HTTPS. Jeśli nie używamy wtyczek do przekierowania, w pliku .htaccess umieszczamy odpowiednie polecenia:

RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

HTTP Strict Transport Security (HSTS) informuje przeglądarkę, że zawsze chcesz, aby użytkownik łączył się za pomocą HTTPS zamiast HTTP. Oznacza to, że wszelkie zakładki, linki lub adresy, które użytkownik wpisuje, będą zmuszone do korzystania z HTTPS, nawet jeśli użytkownik wpisze HTTP. Po ustawieniu HSTS komunikacja przeglądarki z serwerem odbywa się wyłącznie przez bezpieczne połączenie. Wstawiamy więc kod:

Header always set Strict-Transport-Security max-age=31536000; includeSubDomains

Ta polityka będzie egzekwować TLS (ang. Transport Layer Security) – przyjęte jako standard w Internecie rozwinięcie protokołu SSL – na Twojej stronie i wszystkich subdomenach przez rok. Według informacji podawanych przez Google, witryny wykorzystujące HSTS dodawane są do listy najlepszych domen internetowych, co powoduje, że jednocześnie są wyżej pozycjonowane. Jest to więc jeden z kroków do optymalizacji SEO naszej witryny.

Content Security Policy

Dzięki CSP możesz zdefiniować, z jakich domen Twoja strona może ładować zasoby, takie jak obrazy, arkusze stylów, pliki javascript itp. Jest to jeden z bardziej zaawansowanych nagłówków. Ze względu na modułową naturę WordPressa, każda wtyczka i motyw może dodać własne zasoby, takie jak Google Fonts. Również usługi społecznościowe, takie jak Facebook, Instagram, Google Maps, itp, będą ładować zewnętrzne zasoby. Nagłówek CSP pozwala na zdefiniowanie białej listy zatwierdzonych źródeł treści dla Twojej witryny. CSP może działać jako skuteczny środek zaradczy dla ataków XSS (ang. Cross Site Scripting), czyli próby umieszczenia w witrynach internetowych kodu, który zmieni ich treść lub funkcjonalność. Poniżej przedstawiam podstawową politykę wymuszania TLS:

Header always set Content-Security-Policy default-src https: data: 'unsafe-inline' 'unsafe-eval'

CSP posiada ogromną liczbę funkcji, które mogą mieć wpływ na funkcjonalność Twojej witryny – należy stosować je z rozwagą. W razie konieczności pamiętamy o tym, że przed wprowadzeniem zmian wykonujemy kopię pliku .htaccess. Bezpieczeństwo nagłówków CSP możemy indywidualnie zdefiniować używając generatora online na stronie https://report-uri.com/home/generate.

X-Frame-Options

Nagłówek X-Frame-Options chroni odwiedzających przed atakami typu clickjacking. Atakujący może załadować ramkę iframe na swojej stronie i ustawić Twoją stronę jako źródło. Używając sprytnego CSS, może ukryć Twoją witrynę w tle i stworzyć autentycznie wyglądające nakładki. Kiedy odwiedzający klikają na to, co wydaje im się nieszkodliwym linkiem, w rzeczywistości klikają na linki na Twojej stronie w tle. To może nie wydawać się takie złe, dopóki nie uświadomimy sobie, że przeglądarka wykona te żądania w kontekście użytkownika, który może być zalogowany i uwierzytelniony na Twojej stronie. Poprawne wartości to DENY, co oznacza, że Twoja strona nie może być obramowana, SAMEORIGIN, co pozwala na obramowanie Twojej własnej strony lub ALLOW-FROM https://example.com/, co pozwala na określenie stron, które mogą być obramowane na Twojej wiytynie. Dopisujemy więc kod:

Header always set X-Frame-Options SAMEORIGIN

X-Xss-Protection

Ten nagłówek stosuje się do konfiguracji wbudowanej ochrony przed atakami XSS w Internet Explorerze, Chrome i Safari. Istnieją trzy wartości ustawienia dla tego nagłówka:
– 0 – wyłącza ochronę,
– 1 – włącza ochronę,
– 1; mode=block – który mówi przeglądarce, aby zablokować odpowiedź, jeśli wykryje atak, zamiast oczyszczać skrypt. Dopisujemy kolejny kod:

Header always set X-Xss-Protection 1; mode=block

X-Content-Type-Options

Jest to łatwy do skonfigurowania nagłówek, który ma tylko jedną poprawną wartość – nosniff. Ten nagłówek zmusi przeglądarkę, aby nie “zgadywała” jaki rodzaj danych jest przekazywany. Jeśli rozszerzeniem jest “.zip”, przeglądarka powinna otrzymać plik .zip, a nie coś innego (.exe). W przeciwnym razie przeglądarka może zostać podstępnie zmuszona do wykonania skryptu, podczas gdy użytkownik myśli, że pobiera bezpieczny plik. W naszym pliku .htaccess dopisujemy kod:

Header always set X-Content-Type-Options nosniff

Szerzej o tym nagłówku przeczytasz w tym artykule.

Permissions Policy

Permissions Policy jest dodatkową warstwą bezpieczeństwa, która pomaga ograniczyć nieautoryzowany dostęp lub wykorzystanie funkcji przeglądarki/klienta przez zasoby sieciowe. Nagłówek HTTP Permissions-Policy zastępuje istniejący nagłówek Feature-Policy do kontroli delegacji uprawnień. Używa on ustrukturyzowanej składni i pozwala witrynom na ściślejsze ograniczenie tego, które źródła mogą uzyskać dostęp do funkcji. Permissions Policy pozwala określić, które funkcje przeglądarek mogą być używane przez witrynę, takie jak kamera, mikrofon, lokalizacja, pełny ekran itp. Sam decydujesz o ograniczeniach umieszczonych na swojej stronie. Dla przykładu kod:

Header set Permissions-Policy: geolocation=(self "https://example.com"), microphone=()

pozwala na własną geolokalizację witryny https://example.com i nie zezwala na użycie mikrofonu.

Inne możliwości wykorzystania nagłówka tego przedstawiam w artykule Permissions Policy.

Referrer Policy

Referrer Policy pozwala witrynie kontrolować wartość nagłówka referrer w linkach odsyłających z ich stron. Jego funkcjonowanie można przedstawić następująco: gdy użytkownik klika link na jednej stronie, źródłowej, która przenosi go na inną stronę, docelową, strona docelowa otrzymuje informacje o źródle, z którego przyszedł użytkownik. W ten sposób otrzymujemy metryki, takie jak te dostarczane przez Google Analytics, dotyczące tego, skąd pochodzi nasz ruch. Dla bezpieczeństwa naszej witryny warto ustawić parametr:

Referrer-Policy: no-referrer-when-downgrade

który wymusza używanie tego samego protokołu i nie pozwala na jego obniżenie (HTTPS -> HTTP). W ten sposób przekierowanie nigdy nie będzie wymuszało zmiany przejścia na mniej bezpieczny protokół (http).

Expect-CT

Urząd Certyfikacji (wystawca certyfikatu SSL) musi rejestrować wydawane certyfikaty w osobnym dzienniku, w ramach CT (Certificate Transparency). Dzięki temu dziennikowi nieuczciwe Urzędy mogą być szybciej wykryte, a nieprawidłowo wystawione certyfikaty mogą być szybko usunięte. Do naszego pliku dodajemy kolejną linijkę kodu:

Expect-CT: enforce, max-age=30

Przeglądarka będzie teraz buforować i egzekwować tę politykę na wszystkich połączeniach z twoją witryną przez następne 30 sekund. Jeśli na stronie nie wystąpią problemy z funkcjonalnością, możesz stopniowo zwiększać tę wartość, np do minuty, potem 15 minut, godziny, dnia, tygodnia i tak dalej.

Inne nagłówki bezpieczeństwa

Inne nagłówki to Cross-Origin Resource Sharing (CORS), Cross-Origin Resource Policy (CORP), Cross-Origin-Embedder-Policy (COEP) i Cross-Origin-Opener-Policy (COOP). Nagłówki te zapobiegają kilku rodzajom ataków, z których najważniejszym jest Spectre. Korzystanie z niektórych web API może zwiększyć ryzyko ataków takich jak Spectre. Aby zmniejszyć to ryzyko, te nowe nagłówki próbują osiągnąć “cross origin isolation”. Nie jest to możliwe we wszystkich konfiguracjach, ale każdy dodany nagłówek poprawia bezpieczeństwo Twojej strony.
Powyższe nagłówki (CORS, CORP, COEP i COOP) nie mają aktualnie bezpośredniego wpływu na ocenę bezpieczeństwa Twojej witryny. Więcej informacji znajdziesz na stronie https://scotthelme.co.uk/coop-and-coep/.

Nagłówki bezpieczeństwa – podsumowanie

Każdy z użytkowników ma bezpośredni wpływ na bezpieczeństwo swojej witryny. Bywa tak, że użytkownik nie jest świadomy pewnych zagrożeń lub zdaje sobie sprawę, że istnieją, ale z różnych przyczyn je ignoruje. Uważam, że warto poświęcić trochę czasu, aby nasza witryna posiadała określone zabezpieczenia. Jednym z tych zabezpieczeń jest certyfikat SSL, innym nagłówki bezpieczeństwa. Zachęcam do stosowania obu rozwiązań. Można to obrazowo porównać do zabezpieczenia domu. Certyfikat SSL jest jak zamknięte na stosowny zamek drzwi do domu, natomiast nagłówki bezpieczeństwa jak inne miejsca w domu, przez które można się dostać, takie jak drzwi od garażu, okna, drzwi od strony tarasu itp. Jeżeli drzwi główne są zamknięte, a inne drzwi i okna otwarte, to nie zapewniamy właściwej ochrony naszego domu. Podobnie jest z witryną. Korzystając z powyższego artykułu, możesz osiągnąć indeks A+, o którym pisałem również w artykule Strona internetowa – jak ją założyć? Możesz też zamówić usługę Nagłówki bezpieczeństwa – konfiguracja.
W przypadku wątpliwości napisz do mnie.

jak założyć stronę internetową

Jak założyć stronę internetową

Jak założyć stronę internetową? Strona internetowa, blog, a może sklep internetowy? Odpowiedzi na te i podobne pytania znajdziemy w internecie. Ja chcę pokazać krok po kroku, na co zwracam uwagę. Na początku rodzi się pomysł związany z tym, co chcielibyśmy zrobić, aby zaistnieć w sieci.

Jak założyć stronę internetową – wybór nazwy

U rejestratora domeny sprawdzamy czy nazwa jest wolna. Jeśli tak, to tylko krok dzieli nas od jej posiadania. Jeżeli jest zajęta, musimy wymyślić inną nazwę. Wielu rejestratorów z automatu proponuje zbliżoną nazwę lub taką samą, ale różniącą się rozszerzeniem. Przy wyborze domeny warto zwrócić uwagę na koszt jej utrzymania. Przez pierwszy rok może to być za darmo lub za niewielką opłatą. Dlatego warto sprawdzić, jakie będą koszty w kolejnych latach.

Dostawca usług hostingowych

Gdy mamy już zarejestrowaną domenę, należy zadbać o hosting. Firmy hostingowe w swojej ofercie proponują domeny w promocji przy wyborze usług. Warto skorzystać z takiej oferty, gdyż kwestie np. płatności mamy wtedy w jednym miejscu. Zazwyczaj usługę przed podjęciem decyzji możemy bezpłatnie przetestować. Okres testowania to najczęściej 14 dni, ale mogą się zdarzyć krótsze lub dłuższe. Możemy sprawdzić m. in. jakie oprogramowanie do zarządzania treścią oferuje firma, a także zdecydować, co nam pod różnymi względami odpowiada. Pod koniec okresu testowego firma przypomina o opłaceniu faktury w celu przedłużenia hostingu. Jeśli tego nie zrobimy, usługa wygasa.

A co jeśli domenę i hosting mamy u różnych usługodawców? W zasadzie nic złego się nie dzieje. Mogą funkcjonować niezależnie od siebie, ale można też przenieść domenę tam, gdzie mamy hosting. Jeżeli przy wyborze pakietu hostingowego było wsparcie techniczne, to nie musimy się martwić, że jesteśmy laikami. Firma zrobi to za nas.

Na co zwracać uwagę przy wyborze hostingu?

Ja zawsze zaczynam od rankingów i opinii użytkowników. Ważne, żeby w ofercie był certyfikat SSL. Cena też ma znaczenie, ale warto zwrócić uwagę, co mieści się w zakresie cenowym. Ja zwracam uwagę na powierzchnię dysku, częstotliwość taktowania procesora i ilość pamięci RAM; podobnie jak przy wyborze komputera. Co z tego, że będziemy mieli pojemny dysk, jeśli przy małej pamięci RAM i słabym procesorze będziemy się frustrować, że coś dzieje się zbyt wolno lub “zamula”? Podobnie jest z hostingiem. Bardziej zaawansowani użytkownicy będą zwracać uwagę na jeszcze inne dodatkowe parametry, ale na początek, według mnie, wystarczy to, co opisałem.

Jak założyć stronę internetową – wybór ogólnego wyglądu i treści

Gdy już mamy za sobą wyżej opisane rzeczy, przystępujemy do wyboru układu i wyglądu naszej strony. Na początku mamy domyślny szablon w naszym WordPressie. Ponieważ nie mamy jeszcze treści, strona wygląda dość ubogo. Jeżeli nie odpowiada nam szablon, w repozytorium WordPressa znajdziemy ich mnóstwo. Podobnie jest z wtyczkami. Ważne tylko, żeby z ilością nie przesadzić, bo nie tylko my możemy stracić orientację. Nasza strona nie potrafi się domyślić, co nam się spodobało i może się “pogubić”. Jeśli znajdziesz motyw lub wtyczkę, dla której nie ma tłumaczenia, możesz wybrać jeden ze sposobów opisanych przeze mnie w tym artykule. Tu znajdziesz aktualny wykaz moich tłumaczeń. Gdy stronę uzupełniamy treścią, musimy pamiętać o prawach autorskich zarówno do tekstu, jak i mediów. Jeśli nie mamy własnej grafiki, to możemy skorzystać z serwisów udostępniający bezpłatnie lub płatnie określone treści. Warto się zapoznać z regulaminem przed korzystaniem, aby mieć pewność, że nie naruszamy czyichś praw.

Jak założyć stronę internetową – dbamy o prywatność

Przy zakładaniu strony trzeba mieć na względzie tzw. ciasteczka. Jeżeli interesuje nas tylko statystyka odwiedzin, z którą związane są cookies, to powinniśmy o tym informować użytkowników. Ale jeśli nasza strona zawiera formularz kontaktowy, zapisy na newsletter, formularz do komentowania artykułów czy wpisów na blogu lub oferuje usługi czy też sprzedaż produktów, to obowiązkowo musimy zadbać o politykę prywatności. Dodatkowo dla sprzedaży i usług obowiązkowy jest regulamin. Trzeba też mieć na względzie, że regulamin musi być zgodny z obowiązującymi przepisami oraz nie może klientów wprowadzać w błąd. Za niepoprawny regulamin UOKiK może nałożyć karę finansową, jak w tym przypadku.

Sprawdzenia jakościowe i wydajnościowe

Gdy strona internetowa lub jej część jest gotowa, możemy przystąpić do testów. W zasadzie podczas uzupełniania treści na bieżąco możemy kontrolować jej wygląd, w tym responsywność. Musimy mieć na względzie, że symulowany podgląd strony na urządzeniach mobilnych może się trochę różnić od docelowego.

Przystąpienie do testów wydajnościowych nie jest konieczne, ale po sprawdzeniu będziemy mieli informacje na temat spójności i szybkości naszej strony. Ponadto wyświetlane są sugestie, co należy zrobić, żeby strona osiągnęła lepsze indeksy. Ja do tego celu używam narzędzi PageSpeed Insights oraz GTmetrix. Dostęp do obu narzędzi jest bezpłatny, ale GTmetrix ma pewne ograniczenia dla użytkowników nie posiadających konta w serwisie – istnieje możliwość sprawdzenia ok. 10 razy. Po założeniu konta możliwości zwiększają się do przeprowadzenia 50 testów. To powinno wystarczyć.

A teraz przedstawię wyniki moich testów:
1) PageSpeed Insights

jak założyć stronę internetową - test PageSpeed
wersja na komórki
PageSpeed wersja na komputery
wersja na komputery

2) GTmetrix

jak założyć stronę internetową - test GTmetrix

Jak widać, w chwili pisania artykułu, testy wypadają bardzo dobrze, choć są pewne sugestie, które jednak można pominąć.

Po dokonaniu pewnych modyfikacji, wyniki testów przedstawiają się następująco:
1) PageSpeed Insights:

strona internetowa - test PageSpeed 2
wersja na komórki
PageSpeed wersja na komputery 2
wersja na komputery

2) GTmetrix

jak założyć stronę internetową 2

Czy nasza strona internetowa jest bezpieczna?

Gdy już mamy naszą stronę zabezpieczoną certyfikatem SSL, przy użyciu internetowego skanera na stronie https://securityheaders.com/ sprawdzimy bezpieczeństwo nagłówków. Wyniki przedstawiają się następująco:

nagłówki bezpieczeństwa

Początkowo nie wszystkie opcje będą zaznaczone na zielono (w najgorszym wypadku uzyskamy indeks F – wszystkie opcje będą czerwone), ale przy odpowiedniej konfiguracji można uzyskać zadowalający efekt. Jest to trochę czasochłonne i trzeba to robić rozważnie, żeby się nasza strona internetowa nie “rozsypała”.

Na koniec jeszcze pozostaje wypromowanie naszej strony.

To w skrócie najważniejsze elementy, które biorę pod – teraz już wiesz jak założyć stronę internetową. Jeżeli jesteś zainteresowany moimi usługami, to zapraszam.

wordpress dla laików

WordPress dla laików

WordPress dla laików – takie jest motto mojej witryny. Chciałbym trochę przybliżyć jeden z najpopularniejszych systemów zarządzania treścią. Mam świadomość, że wielu użytkowników WordPressa to profesjonaliści, ale są też tacy, którzy dopiero zaczynają z nim przygodę, i to głównie do nich adresuję moje artykuły.

Będę się starał w sposób zrozumiały zwrócić uwagę na istotne elementy tego systemu. Jeśli zajdzie taka potrzeba, być może znajdą się też poradniki. Ale nie zamierzam zastępować już napisanych, bo byłoby to powielanie pewnych treści.

Mój pierwszy kontakt z WordPressem miał miejsce wiele lat temu. W tamtym czasie używałem głównie Pajączka, ale testowałem też inne programy, które służyły do tworzenia stron internetowych. Moją uwagę przyciągnęła Joomla i to ten system zarządzania treścią był mi bliższy. WordPress poszedł w odstawkę na jakiś czas. Jednak po kilku latach WordPress stał się dla mnie numerem 1. Jest on bardzo intuicyjny i praktycznie nie trzeba mieć specjalnych umiejętności, żeby założyć stronę lub bloga. O zakładaniu strony przeczytasz w tym artykule.

WordPress jest intuicyjny

Jak już wspomniałem, intuicyjność systemu WordPress pozwala na szybkie zorientowanie się w panelu administracyjnym. Na wstępie przyjrzyjmy się zakładce Wygląd – tu wybierzemy motyw dla swojej witryny. Jeśli domyślny nam nie odpowiada, możemy sobie zmienić wybierając inny z repozytorium i instalując. Przed instalacją warto zapoznać się z wersją demonstracyjną. Trzeba mieć na względzie, że autorzy motywów w wersji demonstracyjnej zazwyczaj przedstawiają wszystkie funkcje, jak w wersji premium. Jednak darmowa wersja motywu premium nie posiada wielu funkcji. Jeżeli motyw jest darmowy, to wszystkie demonstrowane funkcje będą działać. Czasem jednym z wymogów licencyjnych jest odnośnik do strony autora umieszczony w stopce szablonu. Gdy już mamy motyw, dostosowujemy go do naszych potrzeb.

Jeśli brakuje nam czegoś w naszym serwisie, mamy do dyspozycji wiele wtyczek w repozytorium WordPressa. Potrzebujemy wtedy trochę czasu, aby wybrać to, co nam odpowiada. Jeśli trafisz na fajny motyw lub wtyczkę, a problemem jest brak polskiej wersji językowej, zobacz mój artykuł na ten temat lub skontaktuj się ze mną.

WordPress dla laików – nie dla lajków

Piszę to, chcąc pomóc początkującym, nie nastawiam się na system lajków czy polubień. Wolę komentarze, nawet jeśli nie będą pochlebne, to powinny być konstruktywne. Jeśli masz jakieś uwagi lub przemyślenia – napisz w komentarzu lub wyślij mailem.

Miłej zabawy.