ݺߣ

ݺߣShare a Scribd company logo
Bezpieczne nagłówki
HTTP/HTTPS
Adam Szaraniec
Software Developer - XSolve
1
AGENDA
❖ Wstęp i opis
❖ Wymuszanie bezpiecznego połączenia (HSTS, HPKP)
❖ Nagłówek CSP
❖ Nagłówek X-Frame-Options
❖ Nagłówek X-XSS-Protection
❖ Pytania?
Stack
przeglądarka
sieć
serwer
❖ Cross Site Scripting
❖ Cross Site Request Forgery
❖ Clickjacking
❖ Cookies
❖ Man in the middle
❖ DNS hjacking
❖ SQL injection
❖ Weak Access Control
❖ Session Injection
Man in the middle
PC Ruter
Swiatłowó
d
ISP Sieć Serwer
HTTP Strict Transport Security
Wymusza w przeglądarce klienta używanie tylko połączeń SSL.
Obrazki pochodzą z http://sekurak.pl
HTTP Strict Transport Security
Statystyki - Wsparcie przez przeglądarki
❖ Globalne - 79%
❖ Polska - 89%
Strict-Transport-Security:
max-age=31536000;
includeSubDomains;
preload
Statystyki - użycie (httpsecurityreport.com)
❖ HTTPS: 52%
❖ HSTS: 21%
HTTP Strict Transport Security
Możliwe wady:
❖ TOFU trust-on-first-use,
Rozwiązanie
❖ wartość preload, dodanie strony do https://hstspreload.appspot.com/
Debug: chrome://net-internals/#hsts
Data: https://chromium.googlesource.com/chromium/src/net/+/master/http/transport_security_state_static.json
HTTP Public Key Pinning
Public Key Pinning realizowany poprzez nagłówek protokołu HTTP pozwala na poinformowanie
klienta (przeglądarki) o powiązaniu danego klucza publicznego z konkretnym serwerem (domeną).
Obrazki pochodzą z https://kryptosfera.pl
HTTP Public Key Pinning
❖ Certificate Revocation List (CRL) - Lista unieważnionych certyfikatów.
❖ The Online Certificate Status Protocol (OSCP) - Protokół internetowy używany w celu
uzyskania statusu unieważnienia certyfikatu cyfrowego X.509
Cofnięte certyfikaty:
❖ Comodo
❖ DigiNotar
HTTP Public Key Pinning
Statystyki - Wsparcie przez przeglądarki
❖ Globalne - 56%
❖ Polska - 76%
❖ Brak wsparcia dla IE/Edge/Safari
Statystyki - użycie 0.4%
Public-Key-Pins:
pin-sha256="d6qzRu9zOECxWltNs72z2ak";
max-age=259200
includeSubdomains;
report-uri="https://example.net/pkp"
HTTP Public Key Pinning
Public-Key-Pins-Report-Only: (obecnie nie wspierane) - Nie blokuje dostępu do strony w razie
niezgodności kluczy, a jedynie wysyła raport pod wskazany adres.
Generowanie:
openssl x509 -in certyfikat.pem -pubkey -noout
| openssl rsa -pubin -outform der
| openssl dgst -sha256 -binary
| openssl enc -base64
HTTP Public Key Pinning
DEMO
https://secure-headers.herokuapp.com
Content Security Policy
Content Security Policy pozwala na zdefiniowanie, skąd mogą pochodzić dodatkowe zasoby,
z których korzysta aplikacja www (pliki zewnętrzne JavaScript czy CSS, obrazki i inne elementy
multimedialne). Dzięki temu minimalizuje możliwości ataku XSS.
CSP działa na zasadzie whitelist’y. Wszystkie nie pasujące do polityki zasoby będą przez
przeglądarkę odrzucone jako niedozwolone, a sama przeglądarka zgłosi błąd naruszenia reguł
polityki.
Content Security Policy
Dyrektywa Przykładowe wartości Opis
default-src 'self' cdn.example.com Domyślna polityka ładowania zasobów.
Ciąg wskazujący na konkretne URI, z których skrypty mogą zostać
uruchomione. Ciąg może zawierać dowolną ilość adresów. Można
używać ‘*’ określającego dowolną wartość w miejscu, gdzie został on
zastosowany. Może to być: protokół, nazwa domenowa, subdomena czy
port.
Możliwe jest tez użycie ‚self’. Słowo to wskazuje na możliwość
wykonywania wszystkich skryptów JavaScript pochodzących
z dokładnie tej samej domeny, z której pochodzi wywołujący dokument.
script-src, style-src, img-src,
font-src, media-src
'self' js.example.com Definiuje reguły dla JavaScript, styli css, obrazków, fontów, audio, video.
object-src 'self' Definiuje reguły dla <object>, <embed>, <applet>.
child-src 'self' Definiuje reguły dla <frame>,<iframe> (Zapobiega clickjacking)
form-action 'self' Definiuje reguły dla form action
Content Security Policy
Możliwe specjalne wartości dyrektywy:
❖ ‘self’ - pozwala na ładowanie zasobów z tego samego źródła (protokół + host + port)
❖ ‘none’ - blokuje ładowanie zasobów z wszystkich źródeł
❖ * - wieloznacznik (wildcard)
❖ data - pozwala na ładowanie zasobów używających np data:image/png;base6
❖ https: - pozwala na ładowanie zasobów z wszystkich domen używajcych protokołu https
❖ 'unsafe-inline' - zezwala na ładowanie elementów ‘inline’ np atrybutu onclick, lub tagu script
❖ 'unsafe-eval' - zezwala na dynamiczne wykonywanie kodu ( eval() )
Content Security Policy
Content-Security-Policy:
default-src 'self';
img-src *;
media-src media1.com media2.com;
script-src 'self' 'unsafe-inline' userscripts.example.com;
report-uri="https://example.net/csp-report"
Możliwe jest użycie nagłówka Content-Security-Policy-Report-Only w celu raportowania nadużyć
(elementy nie są blokowane) - przydane z początku wdrażania nagłówka, aby nie blokować
zasobów nie uwzględnionych w liście.
Content Security Policy
Wykonywanie skryptów inline (bez uzywania używania ‘unsafe-inline’):
❖ nounce
<script nounce="randomGenChars">alert('hello word');</script>
Content-Security-Policy: script-src 'self' 'nounce-randomGenChars'
❖ hash
<script>alert('hello word');</script>
Content-Security-Policy: script-src 'self' 'sha256-qznLcsROx4GACP2zCzC='
base64_encode(hash("sha256", alert("hello word")))
Content Security Policy
Wsparcie przeglądarek :
❖ Globalne - 89%
❖ Polska - 92%
❖ Dla IE nagłówek w postaci X-Content-Security-Policy.
Narzędzia:
● https://report-uri.io - Pozwala wyklikać porządane wartości nagłówka. Pozwana na analizę
raportów.
● https://securityheaders.io - Nadrzędzie analizujące nagłówki HTTP i na ich podstawie generuje
raport związany z bezpieczeństwem aplikacji
Content Security Policy
Przykładowy payload
{
"csp-report": {
"document-uri": "http://example.org/page.html",
"referrer": "http://evil.example.com/haxor.html",
"blocked-uri": "http://evil.example.com/image.png",
"violated-directive": "default-src 'self'",
"effective-directive": "img-src",
"original-policy": "default-src 'self'; report-uri http://example.org/csp-report"
}
}
X-Frame-Options
X-Frame-Options służy do wskazania przeglądarce czy powinna być w stanie wyświetlać
zawartość strony w ramce. (Przestarzały!!)
Możliwe opcje:
❖ Deny
❖ ALLOW-FROM uri
❖ SAMEORIGIN
Mniejszy priorytet niż CSP.
Warto używać jako fall-back ponieważ jest wpierany przez starsze przeglądraki.
X-XSS-Protection
X-XSS-Protection wykrywa ataki typu XSS i je blokuje. (IE >=8)
X-XSS-Protection: 1 mode=block
Większość aktualnych przeglądarek ma włączony filtr XSS domyślnie.
Filtr jest mało skuteczny, a jako metodę obrony przed XSS powinno się używać filtrowania
i 'escapowania' danych pochodzących z nieznanych źródeł.
Pytania?

More Related Content

What's hot (16)

Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadki
Logicaltrust pl
Devops/Sysops security
Devops/Sysops securityDevops/Sysops security
Devops/Sysops security
Logicaltrust pl
Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...
Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...
Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...
Leszek Mi?
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
Leszek Mi?
Devops security
Devops securityDevops security
Devops security
Logicaltrust pl
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Grzegorz Gałęzowski
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiasto
secman_pl
Bezpieczenstwo to podstawa
Bezpieczenstwo to podstawaBezpieczenstwo to podstawa
Bezpieczenstwo to podstawa
Bartosz Romanowski
Bezpieczeństwo WordPress okiem administratora - WordCamp Warszawa 2014
Bezpieczeństwo WordPress okiem administratora - WordCamp Warszawa 2014Bezpieczeństwo WordPress okiem administratora - WordCamp Warszawa 2014
Bezpieczeństwo WordPress okiem administratora - WordCamp Warszawa 2014
Michał Smereczyński
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Leszek Mi?
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersWyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Logicaltrust pl
Web Application Firewall -- potrzeba,rozwiązania, kryteria ewaluacji
Web Application Firewall -- potrzeba,rozwiązania, kryteria ewaluacjiWeb Application Firewall -- potrzeba,rozwiązania, kryteria ewaluacji
Web Application Firewall -- potrzeba,rozwiązania, kryteria ewaluacji
msobiegraj
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
PROIDEA
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania
SecuRing
Own cloud (2)
Own cloud (2)Own cloud (2)
Own cloud (2)
marthinpl
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Logicaltrust pl
Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadki
Logicaltrust pl
Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...
Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...
Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...
Leszek Mi?
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
Leszek Mi?
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Grzegorz Gałęzowski
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiasto
secman_pl
Bezpieczeństwo WordPress okiem administratora - WordCamp Warszawa 2014
Bezpieczeństwo WordPress okiem administratora - WordCamp Warszawa 2014Bezpieczeństwo WordPress okiem administratora - WordCamp Warszawa 2014
Bezpieczeństwo WordPress okiem administratora - WordCamp Warszawa 2014
Michał Smereczyński
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Leszek Mi?
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersWyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Logicaltrust pl
Web Application Firewall -- potrzeba,rozwiązania, kryteria ewaluacji
Web Application Firewall -- potrzeba,rozwiązania, kryteria ewaluacjiWeb Application Firewall -- potrzeba,rozwiązania, kryteria ewaluacji
Web Application Firewall -- potrzeba,rozwiązania, kryteria ewaluacji
msobiegraj
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
PROIDEA
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania
SecuRing
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Logicaltrust pl

Similar to Piątek z XSolve - Bezpieczne nagłówki HTTP (20)

HTML5: Atak i obrona
HTML5: Atak i obronaHTML5: Atak i obrona
HTML5: Atak i obrona
Krzysztof Kotowicz
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
PROIDEA
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NET
Bartlomiej Zass
WebView security on iOS (PL)
WebView security on iOS (PL)WebView security on iOS (PL)
WebView security on iOS (PL)
lpilorz
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
bm9ib2r5
W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressa
Bartosz Romanowski
Wordpress i nagłówki
Wordpress i nagłówkiWordpress i nagłówki
Wordpress i nagłówki
Arkadiusz Stęplowski
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PROIDEA
PLNOG19 - Sebastian Pasternacki - Wykrywanie złośliwego kodu
PLNOG19 - Sebastian Pasternacki - Wykrywanie złośliwego koduPLNOG19 - Sebastian Pasternacki - Wykrywanie złośliwego kodu
PLNOG19 - Sebastian Pasternacki - Wykrywanie złośliwego kodu
PROIDEA
Ataki po stronie klienta w publicznych punktach dostępowych
Ataki po stronie klienta w publicznych punktach dostępowychAtaki po stronie klienta w publicznych punktach dostępowych
Ataki po stronie klienta w publicznych punktach dostępowych
Pawel Rzepa
Owasp Top10 2010 RC1 PL
Owasp Top10 2010 RC1 PLOwasp Top10 2010 RC1 PL
Owasp Top10 2010 RC1 PL
Think Secure
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PROIDEA
Bezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychBezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowych
PHPstokPHPstok
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PROIDEA
Jak prawidłowo wdrożyć certyfikat SSL?
Jak prawidłowo wdrożyć certyfikat SSL?Jak prawidłowo wdrożyć certyfikat SSL?
Jak prawidłowo wdrożyć certyfikat SSL?
Ideo Sp. z o.o.
OWASP Appsensor in action
OWASP Appsensor in actionOWASP Appsensor in action
OWASP Appsensor in action
LeszekMis
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
Future Processing
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
Tomasz Dziuda
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
PROIDEA
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NET
Bartlomiej Zass
WebView security on iOS (PL)
WebView security on iOS (PL)WebView security on iOS (PL)
WebView security on iOS (PL)
lpilorz
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
bm9ib2r5
W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressa
Bartosz Romanowski
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PROIDEA
PLNOG19 - Sebastian Pasternacki - Wykrywanie złośliwego kodu
PLNOG19 - Sebastian Pasternacki - Wykrywanie złośliwego koduPLNOG19 - Sebastian Pasternacki - Wykrywanie złośliwego kodu
PLNOG19 - Sebastian Pasternacki - Wykrywanie złośliwego kodu
PROIDEA
Ataki po stronie klienta w publicznych punktach dostępowych
Ataki po stronie klienta w publicznych punktach dostępowychAtaki po stronie klienta w publicznych punktach dostępowych
Ataki po stronie klienta w publicznych punktach dostępowych
Pawel Rzepa
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PROIDEA
Bezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychBezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowych
PHPstokPHPstok
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PROIDEA
Jak prawidłowo wdrożyć certyfikat SSL?
Jak prawidłowo wdrożyć certyfikat SSL?Jak prawidłowo wdrożyć certyfikat SSL?
Jak prawidłowo wdrożyć certyfikat SSL?
Ideo Sp. z o.o.
OWASP Appsensor in action
OWASP Appsensor in actionOWASP Appsensor in action
OWASP Appsensor in action
LeszekMis
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
Tomasz Dziuda
Ad

More from XSolve (20)

Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricks
XSolve
How to Create an Agile Office
How to Create an Agile OfficeHow to Create an Agile Office
How to Create an Agile Office
XSolve
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy SpringXlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
XSolve
How to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a ChevroletHow to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a Chevrolet
XSolve
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Bootxlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
XSolve
xlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSxlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJS
XSolve
How to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.plHow to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.pl
XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolve
XSolve
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8
XSolve
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektowe
XSolve
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous Delivery
XSolve
Grafowa baza danych i integracja z symfony
Grafowa baza danych  i integracja z symfonyGrafowa baza danych  i integracja z symfony
Grafowa baza danych i integracja z symfony
XSolve
How to outsource Scrum projects - a guide
How to outsource Scrum projects - a guideHow to outsource Scrum projects - a guide
How to outsource Scrum projects - a guide
XSolve
Xsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerce
XSolve
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasingPrezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
XSolve
Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?
XSolve
Programowanie zorientowane aspektowo
Programowanie zorientowane aspektowoProgramowanie zorientowane aspektowo
Programowanie zorientowane aspektowo
XSolve
Agile estimating and planning
Agile estimating and planningAgile estimating and planning
Agile estimating and planning
XSolve
Tailoring of PRINCE2
Tailoring of PRINCE2Tailoring of PRINCE2
Tailoring of PRINCE2
XSolve
Mongo db baza danych zorientowana dokumentowo
Mongo db  baza danych zorientowana dokumentowo Mongo db  baza danych zorientowana dokumentowo
Mongo db baza danych zorientowana dokumentowo
XSolve
Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricks
XSolve
How to Create an Agile Office
How to Create an Agile OfficeHow to Create an Agile Office
How to Create an Agile Office
XSolve
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy SpringXlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
XSolve
How to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a ChevroletHow to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a Chevrolet
XSolve
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Bootxlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
XSolve
xlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSxlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJS
XSolve
How to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.plHow to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.pl
XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolve
XSolve
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8
XSolve
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektowe
XSolve
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous Delivery
XSolve
Grafowa baza danych i integracja z symfony
Grafowa baza danych  i integracja z symfonyGrafowa baza danych  i integracja z symfony
Grafowa baza danych i integracja z symfony
XSolve
How to outsource Scrum projects - a guide
How to outsource Scrum projects - a guideHow to outsource Scrum projects - a guide
How to outsource Scrum projects - a guide
XSolve
Xsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerce
XSolve
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasingPrezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
XSolve
Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?
XSolve
Programowanie zorientowane aspektowo
Programowanie zorientowane aspektowoProgramowanie zorientowane aspektowo
Programowanie zorientowane aspektowo
XSolve
Agile estimating and planning
Agile estimating and planningAgile estimating and planning
Agile estimating and planning
XSolve
Tailoring of PRINCE2
Tailoring of PRINCE2Tailoring of PRINCE2
Tailoring of PRINCE2
XSolve
Mongo db baza danych zorientowana dokumentowo
Mongo db  baza danych zorientowana dokumentowo Mongo db  baza danych zorientowana dokumentowo
Mongo db baza danych zorientowana dokumentowo
XSolve
Ad

Piątek z XSolve - Bezpieczne nagłówki HTTP

  • 2. 1 AGENDA ❖ Wstęp i opis ❖ Wymuszanie bezpiecznego połączenia (HSTS, HPKP) ❖ Nagłówek CSP ❖ Nagłówek X-Frame-Options ❖ Nagłówek X-XSS-Protection ❖ Pytania?
  • 3. Stack przeglądarka sieć serwer ❖ Cross Site Scripting ❖ Cross Site Request Forgery ❖ Clickjacking ❖ Cookies ❖ Man in the middle ❖ DNS hjacking ❖ SQL injection ❖ Weak Access Control ❖ Session Injection
  • 4. Man in the middle PC Ruter Swiatłowó d ISP Sieć Serwer
  • 5. HTTP Strict Transport Security Wymusza w przeglądarce klienta używanie tylko połączeń SSL. Obrazki pochodzą z http://sekurak.pl
  • 6. HTTP Strict Transport Security Statystyki - Wsparcie przez przeglądarki ❖ Globalne - 79% ❖ Polska - 89% Strict-Transport-Security: max-age=31536000; includeSubDomains; preload Statystyki - użycie (httpsecurityreport.com) ❖ HTTPS: 52% ❖ HSTS: 21%
  • 7. HTTP Strict Transport Security Możliwe wady: ❖ TOFU trust-on-first-use, Rozwiązanie ❖ wartość preload, dodanie strony do https://hstspreload.appspot.com/ Debug: chrome://net-internals/#hsts Data: https://chromium.googlesource.com/chromium/src/net/+/master/http/transport_security_state_static.json
  • 8. HTTP Public Key Pinning Public Key Pinning realizowany poprzez nagłówek protokołu HTTP pozwala na poinformowanie klienta (przeglądarki) o powiązaniu danego klucza publicznego z konkretnym serwerem (domeną).
  • 9. Obrazki pochodzą z https://kryptosfera.pl
  • 10. HTTP Public Key Pinning ❖ Certificate Revocation List (CRL) - Lista unieważnionych certyfikatów. ❖ The Online Certificate Status Protocol (OSCP) - Protokół internetowy używany w celu uzyskania statusu unieważnienia certyfikatu cyfrowego X.509 Cofnięte certyfikaty: ❖ Comodo ❖ DigiNotar
  • 11. HTTP Public Key Pinning Statystyki - Wsparcie przez przeglądarki ❖ Globalne - 56% ❖ Polska - 76% ❖ Brak wsparcia dla IE/Edge/Safari Statystyki - użycie 0.4% Public-Key-Pins: pin-sha256="d6qzRu9zOECxWltNs72z2ak"; max-age=259200 includeSubdomains; report-uri="https://example.net/pkp"
  • 12. HTTP Public Key Pinning Public-Key-Pins-Report-Only: (obecnie nie wspierane) - Nie blokuje dostępu do strony w razie niezgodności kluczy, a jedynie wysyła raport pod wskazany adres. Generowanie: openssl x509 -in certyfikat.pem -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
  • 13. HTTP Public Key Pinning DEMO https://secure-headers.herokuapp.com
  • 14. Content Security Policy Content Security Policy pozwala na zdefiniowanie, skąd mogą pochodzić dodatkowe zasoby, z których korzysta aplikacja www (pliki zewnętrzne JavaScript czy CSS, obrazki i inne elementy multimedialne). Dzięki temu minimalizuje możliwości ataku XSS. CSP działa na zasadzie whitelist’y. Wszystkie nie pasujące do polityki zasoby będą przez przeglądarkę odrzucone jako niedozwolone, a sama przeglądarka zgłosi błąd naruszenia reguł polityki.
  • 15. Content Security Policy Dyrektywa Przykładowe wartości Opis default-src 'self' cdn.example.com Domyślna polityka ładowania zasobów. Ciąg wskazujący na konkretne URI, z których skrypty mogą zostać uruchomione. Ciąg może zawierać dowolną ilość adresów. Można używać ‘*’ określającego dowolną wartość w miejscu, gdzie został on zastosowany. Może to być: protokół, nazwa domenowa, subdomena czy port. Możliwe jest tez użycie ‚self’. Słowo to wskazuje na możliwość wykonywania wszystkich skryptów JavaScript pochodzących z dokładnie tej samej domeny, z której pochodzi wywołujący dokument. script-src, style-src, img-src, font-src, media-src 'self' js.example.com Definiuje reguły dla JavaScript, styli css, obrazków, fontów, audio, video. object-src 'self' Definiuje reguły dla <object>, <embed>, <applet>. child-src 'self' Definiuje reguły dla <frame>,<iframe> (Zapobiega clickjacking) form-action 'self' Definiuje reguły dla form action
  • 16. Content Security Policy Możliwe specjalne wartości dyrektywy: ❖ ‘self’ - pozwala na ładowanie zasobów z tego samego źródła (protokół + host + port) ❖ ‘none’ - blokuje ładowanie zasobów z wszystkich źródeł ❖ * - wieloznacznik (wildcard) ❖ data - pozwala na ładowanie zasobów używających np data:image/png;base6 ❖ https: - pozwala na ładowanie zasobów z wszystkich domen używajcych protokołu https ❖ 'unsafe-inline' - zezwala na ładowanie elementów ‘inline’ np atrybutu onclick, lub tagu script ❖ 'unsafe-eval' - zezwala na dynamiczne wykonywanie kodu ( eval() )
  • 17. Content Security Policy Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src 'self' 'unsafe-inline' userscripts.example.com; report-uri="https://example.net/csp-report" Możliwe jest użycie nagłówka Content-Security-Policy-Report-Only w celu raportowania nadużyć (elementy nie są blokowane) - przydane z początku wdrażania nagłówka, aby nie blokować zasobów nie uwzględnionych w liście.
  • 18. Content Security Policy Wykonywanie skryptów inline (bez uzywania używania ‘unsafe-inline’): ❖ nounce <script nounce="randomGenChars">alert('hello word');</script> Content-Security-Policy: script-src 'self' 'nounce-randomGenChars' ❖ hash <script>alert('hello word');</script> Content-Security-Policy: script-src 'self' 'sha256-qznLcsROx4GACP2zCzC=' base64_encode(hash("sha256", alert("hello word")))
  • 19. Content Security Policy Wsparcie przeglądarek : ❖ Globalne - 89% ❖ Polska - 92% ❖ Dla IE nagłówek w postaci X-Content-Security-Policy. Narzędzia: ● https://report-uri.io - Pozwala wyklikać porządane wartości nagłówka. Pozwana na analizę raportów. ● https://securityheaders.io - Nadrzędzie analizujące nagłówki HTTP i na ich podstawie generuje raport związany z bezpieczeństwem aplikacji
  • 20. Content Security Policy Przykładowy payload { "csp-report": { "document-uri": "http://example.org/page.html", "referrer": "http://evil.example.com/haxor.html", "blocked-uri": "http://evil.example.com/image.png", "violated-directive": "default-src 'self'", "effective-directive": "img-src", "original-policy": "default-src 'self'; report-uri http://example.org/csp-report" } }
  • 21. X-Frame-Options X-Frame-Options służy do wskazania przeglądarce czy powinna być w stanie wyświetlać zawartość strony w ramce. (Przestarzały!!) Możliwe opcje: ❖ Deny ❖ ALLOW-FROM uri ❖ SAMEORIGIN Mniejszy priorytet niż CSP. Warto używać jako fall-back ponieważ jest wpierany przez starsze przeglądraki.
  • 22. X-XSS-Protection X-XSS-Protection wykrywa ataki typu XSS i je blokuje. (IE >=8) X-XSS-Protection: 1 mode=block Większość aktualnych przeglądarek ma włączony filtr XSS domyślnie. Filtr jest mało skuteczny, a jako metodę obrony przed XSS powinno się używać filtrowania i 'escapowania' danych pochodzących z nieznanych źródeł.