rest security
TRANSCRIPT
![Page 1: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/1.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Bezpiecze«stwo REST API
Krzysztof Pobo»an
WPC Toru«,Agora S.A.
Toru«,16 marca 2015
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 2: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/2.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Agenda
1 Wst¦p
2 Autentykacja i sesja
3 Autoryzacja
4 Walidacja danych wej±ciowych
5 Kodowanie danych wyj±ciowych
6 Kryptogra�a
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 3: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/3.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Wst¦p
REST (REpresentational State Transfer) - uwidocznienie encji za pomoc¡elementów URL. REST nie jest architektur¡, a stylem architektonicznympozwalaj¡cym budowa¢ usªugi na bazie Web. REST preferuje interakcjebazuj¡cym na elementach Web poprzez proste URLe ponad skomplikowanezapytania.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 4: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/4.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Autentykacja i sesja
Usªugi RESTful powinny u»ywa¢ autentykacji bazuj¡cej na sesji z tokenem lubwykorzystuj¡c klucz API. Nazwa u»ytkownika, hasªo, token lub klucz API nigdynie powinien by¢ przekazywany w URL.Mo»na u»y¢ TLS albo OAuth i SSL.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 5: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/5.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Ochrona sesji
Serwis z zaªo»enia jest bezstanowy. W zwi¡zku z tym:Sesja klienta powinna by¢ identy�kowalna przez tokena albo klucz API wcashu serwera."Anti-replay" - zabezpieczenie przed skopiowaniem cz¦±ci requesta do innegoprzez atakuj¡cego w celu podszycia si¦. Klucz szyfruj¡cy powinien by¢ograniczony czasowo i by¢ zwi¡zany z: tokenem lub kluczem API, dat¡generowania i ip sk¡d przyszªo »¡danie.
W skrócie nie dopuszcza¢ do u»ywania adresu w stylu:
https://example.com/users/2313/edit?isAdmin=false&debug=false&allowCSRPanel=false
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 6: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/6.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Anty-farmienie
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 7: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/7.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Ochrona metod HTTP
Upewni¢ si¦ »e dany u»ytkownik mo»e wykona¢ dan¡ metod¦.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 8: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/8.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Ochrona
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 9: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/9.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Biaªa lista czasowników
Dost¦pno±¢ metod powinna by¢ na zasadzie biaªej listy.Odpowiedni kod bª¦du (np. 403 Brak uprawnie«)!
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 10: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/10.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Uprzywilejowane akcje i czuªe dane
Nale»y pilnowa¢ by zawsze przesyªa¢ token lub klucz API w celu wery�kacjiuprawnie« (je±li nie u»ywamy Basic Authenticate).
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 11: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/11.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Zapytania mi¡dzydomenowe (CSRF)
Metody PUT, POST i DELETE musz¡ by¢ zabezpieczone przeciwko atakowiCSRF np. poprzez u»ywanie losowych tokenów.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 12: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/12.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Walidacja danych wej±ciowych
Walidujemy 110% wi¦cej ni» jak obsªugujemy formularz. Logowa¢ wszystkienarusznie reguª walidacji.Bezpieczne parsowanie, Upewnienie si¦ »e przy np. wej±ciu w formacie XMLbiblioteka parsuj¡ca jest odporna na ataki typu XXESilne typowanie. W ramach typowaia sprawdzamy nie tylko typ ale i wielko±¢danych.nie ufamy polu Content-Type w nagªówku dla metod POST i PUT. Je±liCOntent-Type nie zgadza si¦ z rzeczywist¡ zawarto±ci¡ nale»y zwróci¢: 406Not Acceptable. �ci±le kontrolowa¢ dost¦pne formaty danych wej±ciowych.Najlepiej przed deserializacj¡.Walidujemy typ wyj±ciowy.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 13: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/13.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Walidacja danych wej±ciowych
Walidujemy 110% wi¦cej ni» jak obsªugujemy formularz. Logowa¢ wszystkienarusznie reguª walidacji.
Bezpieczne parsowanie, Upewnienie si¦ »e przy np. wej±ciu w formacie XMLbiblioteka parsuj¡ca jest odporna na ataki typu XXESilne typowanie. W ramach typowaia sprawdzamy nie tylko typ ale i wielko±¢danych.nie ufamy polu Content-Type w nagªówku dla metod POST i PUT. Je±liCOntent-Type nie zgadza si¦ z rzeczywist¡ zawarto±ci¡ nale»y zwróci¢: 406Not Acceptable. �ci±le kontrolowa¢ dost¦pne formaty danych wej±ciowych.Najlepiej przed deserializacj¡.Walidujemy typ wyj±ciowy.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 14: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/14.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Walidacja danych wej±ciowych
Walidujemy 110% wi¦cej ni» jak obsªugujemy formularz. Logowa¢ wszystkienarusznie reguª walidacji.Bezpieczne parsowanie, Upewnienie si¦ »e przy np. wej±ciu w formacie XMLbiblioteka parsuj¡ca jest odporna na ataki typu XXE
Silne typowanie. W ramach typowaia sprawdzamy nie tylko typ ale i wielko±¢danych.nie ufamy polu Content-Type w nagªówku dla metod POST i PUT. Je±liCOntent-Type nie zgadza si¦ z rzeczywist¡ zawarto±ci¡ nale»y zwróci¢: 406Not Acceptable. �ci±le kontrolowa¢ dost¦pne formaty danych wej±ciowych.Najlepiej przed deserializacj¡.Walidujemy typ wyj±ciowy.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 15: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/15.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Walidacja danych wej±ciowych
Walidujemy 110% wi¦cej ni» jak obsªugujemy formularz. Logowa¢ wszystkienarusznie reguª walidacji.Bezpieczne parsowanie, Upewnienie si¦ »e przy np. wej±ciu w formacie XMLbiblioteka parsuj¡ca jest odporna na ataki typu XXESilne typowanie. W ramach typowaia sprawdzamy nie tylko typ ale i wielko±¢danych.
nie ufamy polu Content-Type w nagªówku dla metod POST i PUT. Je±liCOntent-Type nie zgadza si¦ z rzeczywist¡ zawarto±ci¡ nale»y zwróci¢: 406Not Acceptable. �ci±le kontrolowa¢ dost¦pne formaty danych wej±ciowych.Najlepiej przed deserializacj¡.Walidujemy typ wyj±ciowy.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 16: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/16.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Walidacja danych wej±ciowych
Walidujemy 110% wi¦cej ni» jak obsªugujemy formularz. Logowa¢ wszystkienarusznie reguª walidacji.Bezpieczne parsowanie, Upewnienie si¦ »e przy np. wej±ciu w formacie XMLbiblioteka parsuj¡ca jest odporna na ataki typu XXESilne typowanie. W ramach typowaia sprawdzamy nie tylko typ ale i wielko±¢danych.nie ufamy polu Content-Type w nagªówku dla metod POST i PUT. Je±liCOntent-Type nie zgadza si¦ z rzeczywist¡ zawarto±ci¡ nale»y zwróci¢: 406Not Acceptable. �ci±le kontrolowa¢ dost¦pne formaty danych wej±ciowych.Najlepiej przed deserializacj¡.Walidujemy typ wyj±ciowy.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 17: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/17.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Zawsze wysyªamy
Powinno si¦ wysyªa¢: X-Content-Type-Options: nosniff aby mie¢pewno±¢, »e klient nie b¦dzie próbowaª rozpozna¢ rodzaju tre±ci pozawarto±ci.
JSON - zarawrto±¢ elementów DOM nigdy nie powinny by¢ mody�kowanepoprzez .innerHtml a za pomoc¡ .value/.innerText/.textContent aby chroni¢si¦ przed prostymi atakami DOM XSS
XML - nigdy nie powinnien by¢ budowany poprzez sklejanie stringa, apoprzez serializacj¦. To zapewnia »e XML jest parsowalny dla przegl¡darek inie zawiera wstrzykni¦¢.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 18: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/18.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Zawsze wysyªamy
Powinno si¦ wysyªa¢: X-Content-Type-Options: nosniff aby mie¢pewno±¢, »e klient nie b¦dzie próbowaª rozpozna¢ rodzaju tre±ci pozawarto±ci.
JSON - zarawrto±¢ elementów DOM nigdy nie powinny by¢ mody�kowanepoprzez .innerHtml a za pomoc¡ .value/.innerText/.textContent aby chroni¢si¦ przed prostymi atakami DOM XSS
XML - nigdy nie powinnien by¢ budowany poprzez sklejanie stringa, apoprzez serializacj¦. To zapewnia »e XML jest parsowalny dla przegl¡darek inie zawiera wstrzykni¦¢.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 19: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/19.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Zawsze wysyªamy
Powinno si¦ wysyªa¢: X-Content-Type-Options: nosniff aby mie¢pewno±¢, »e klient nie b¦dzie próbowaª rozpozna¢ rodzaju tre±ci pozawarto±ci.
JSON - zarawrto±¢ elementów DOM nigdy nie powinny by¢ mody�kowanepoprzez .innerHtml a za pomoc¡ .value/.innerText/.textContent aby chroni¢si¦ przed prostymi atakami DOM XSS
XML - nigdy nie powinnien by¢ budowany poprzez sklejanie stringa, apoprzez serializacj¦. To zapewnia »e XML jest parsowalny dla przegl¡darek inie zawiera wstrzykni¦¢.
Krzysztof Pobo»an Bezpiecze«stwo REST API
![Page 20: Rest security](https://reader035.vdocuments.site/reader035/viewer/2022080214/55ab0ac91a28abc8718b46a0/html5/thumbnails/20.jpg)
Wst¦pAutentykacja i sesja
AutoryzacjaWalidacja danych wej±ciowych
Kodowanie danych wyj±ciowychKryptogra�a
Je±li caªo±¢ udost¦pniana przez serwis nie jest tylko do odczytu to obowi¡zkowopowinno si¦ u»ywa¢ TLS.Dla szczególnie wra»liwych danych powinni±my u»ywa¢ uwie»ytelniania klientacerty�katem.
Andrew van der Stock Erlend Oftedal.Rest security cheat sheet.https://www.owasp.org/index.php/REST_Security_Cheat_Sheet.
Bhakti Mehta.RESTful Java Patterns and Best Practices.Packt Publishing Ltd., 2014.
Krzysztof Pobo»an Bezpiecze«stwo REST API