SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
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?

Contenu connexe

Tendances

Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiLogicaltrust 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.comLeszek 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 Trojmiastosecman_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 2014Michał 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, 4DevelopersLogicaltrust 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 ewaluacjimsobiegraj
 
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 BuckiPROIDEA
 
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowaniaSecuRing
 
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 Pingwinaria2009Logicaltrust pl
 

Tendances (16)

Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadki
 
Devops/Sysops security
Devops/Sysops securityDevops/Sysops security
Devops/Sysops security
 
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 ...
 
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
 
Devops security
Devops securityDevops security
Devops security
 
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...
 
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiasto
 
Bezpieczenstwo to podstawa
Bezpieczenstwo to podstawaBezpieczenstwo to podstawa
Bezpieczenstwo to podstawa
 
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
 
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...
 
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
 
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
 
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
 
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania
 
Own cloud (2)
Own cloud (2)Own cloud (2)
Own cloud (2)
 
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
 

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

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 DworakowskiPROIDEA
 
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETBartlomiej 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 Linuxbm9ib2r5
 
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 WordPressaBartosz 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 koduPROIDEA
 
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ępowychPawel Rzepa
 
Owasp Top10 2010 RC1 PL
Owasp Top10 2010 RC1 PLOwasp Top10 2010 RC1 PL
Owasp Top10 2010 RC1 PLThink 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, SDNPROIDEA
 
Bezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychBezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychPHPstokPHPstok
 
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 actionLeszekMis
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-aFuture 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 DayTomasz Dziuda
 
HTTP od zera do bohatera
HTTP od zera do bohateraHTTP od zera do bohatera
HTTP od zera do bohateraHordeTechnology
 

Similaire à Piątek z XSolve - Bezpieczne nagłówki HTTP (20)

HTML5: Atak i obrona
HTML5: Atak i obronaHTML5: Atak i obrona
HTML5: Atak i obrona
 
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
 
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NET
 
WebView security on iOS (PL)
WebView security on iOS (PL)WebView security on iOS (PL)
WebView security on iOS (PL)
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
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
 
Wordpress i nagłówki
Wordpress i nagłówkiWordpress i nagłówki
Wordpress i nagłówki
 
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...
 
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
 
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
 
Owasp Top10 2010 RC1 PL
Owasp Top10 2010 RC1 PLOwasp Top10 2010 RC1 PL
Owasp Top10 2010 RC1 PL
 
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
 
Bezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychBezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowych
 
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...
 
Design Modern API - The Right Way
Design Modern API - The Right WayDesign Modern API - The Right Way
Design Modern API - The Right Way
 
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?
 
OWASP Appsensor in action
OWASP Appsensor in actionOWASP Appsensor in action
OWASP Appsensor in action
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
 
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
 
HTTP od zera do bohatera
HTTP od zera do bohateraHTTP od zera do bohatera
HTTP od zera do bohatera
 

Plus de 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 & tricksXSolve
 
How to Create an Agile Office
How to Create an Agile OfficeHow to Create an Agile Office
How to Create an Agile OfficeXSolve
 
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 SpringXSolve
 
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 ChevroletXSolve
 
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 BootXSolve
 
xlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSxlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSXSolve
 
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.plXSolve
 
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 / XSolveXSolve
 
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 8XSolve
 
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXSolve
 
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 DeliveryXSolve
 
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 symfonyXSolve
 
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 guideXSolve
 
Xsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXSolve
 
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, bodyleasingXSolve
 
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 aspektowoXSolve
 
Agile estimating and planning
Agile estimating and planningAgile estimating and planning
Agile estimating and planningXSolve
 
Tailoring of PRINCE2
Tailoring of PRINCE2Tailoring of PRINCE2
Tailoring of PRINCE2XSolve
 
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
 

Plus de 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
 
How to Create an Agile Office
How to Create an Agile OfficeHow to Create an Agile Office
How to Create an Agile Office
 
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
 
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
 
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
 
xlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSxlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJS
 
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
 
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
 
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
 
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektowe
 
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
 
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
 
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 presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerce
 
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
 
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 ?
 
Programowanie zorientowane aspektowo
Programowanie zorientowane aspektowoProgramowanie zorientowane aspektowo
Programowanie zorientowane aspektowo
 
Agile estimating and planning
Agile estimating and planningAgile estimating and planning
Agile estimating and planning
 
Tailoring of PRINCE2
Tailoring of PRINCE2Tailoring of PRINCE2
Tailoring of PRINCE2
 
Mongo db baza danych zorientowana dokumentowo
Mongo db  baza danych zorientowana dokumentowo Mongo db  baza danych zorientowana dokumentowo
Mongo db baza danych zorientowana dokumentowo
 

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ł.