HTTP od zera do bohatera

Post on 01-Jul-2015

210 views 4 download

Transcript of HTTP od zera do bohatera

od zera do bohateraMarek StawiaszPaweł Apanasewicz

O czym będziemy mówić

HTTPHTTPS, WebDAV, SPDY

DNT, HSTS, HTLSAJAX, Same Origin Policy, CORS

1. Hypertext Transfer Protocol

2. protokół warstwy aplikacji według modelu OSI

3. bazuje na TCP

4. nasłuchuje na porcie 80 (wersja szyfrowana na porcie 443)

5. jest protokołem tekstowym

6. jest protokołem bezstanowym

OK, więc co to takiego ten HTTP?

Pierwszy dokument o HTTPukazał się w 1991 roku

Czyli 21 lat temu!

To prehistoria jeśli chodziInternet

A życie wtedy było dużo prostsze

Dawno, dawno temu...

HTTP w pierwszej swojej wersji 0.9 posiadał tylko jedną metodę – GET*

* daj mi ten dokument

REWOLUCJA ROZPOCZĘŁA SIĘ

Jak mówi klient (przeglądarka)?

A w praktyce

GET /index.html HTTP/1.1Host: www.example.comUser-Agent: Mozilla/5 (X11;Ubuntu;Linux) Firefox 16Cookie: ala=makotaAccept: text/htmlAccept-Language: en-US

Jak mówi serwer?

A w praktyce

HTTP/1.1 200 OKDate: Mon, 23 May 2005 22:38:34 GMTServer: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)Etag: "3f80f-1b6-3e1cb03b"Content-Length: 438Connection: closeContent-Type: text/html; charset=UTF-8

Czterysta trzydzieści osiem bajtów odpowiedzi...

Najczęściej spotykane kody odpowiedzi serwera

A w praktyce

200 OK201 Created202 Accepted204 No Content206 Partial Content301 Moved Permanently304 Not Modified400 Bad Request403 Forbidden405 Method Not Allowed500 Interal Server Error

404 Not Found404 Not Found

Co jeszcze może HTTP:

A w praktyce

- pobierać dokument - GET- przesyłać dane - POST- zapytać o nagłówki - HEAD- przesyłać pliki na serwer - PUT- kasować pliki na serwerze - DELETE- spytać serwer o możliwości - OPTIONSi inne: TRACE, CONNECT

Siła drzemie... w nagłówkach

A w praktyce

w standardzie HTTP 1.1 otrzymujemy:31 nagłówków zapytania34 nagłówków odpowiedzi

dodatkowo poza standardem:7 powszechnie stosowanych nagłówków zapytania5 powszechnie stosowanych nagłówków odpowiedzi

Siła drzemie... w nagłówkach

A w praktyce

Serwer Klient

Server Host

Date User-Agent

Expires Accept-Language

Vary Accept-Encoding

Content-Language Accept

Content-Encoding Referer

Content-Type Set-Cookie

Location X-Forwarded-For

Cookie

Cache-Control

Siła drzemie... w nagłówkach

A w praktyce

X-Powered-By: UnicornsX-Powered-By: Rats in your basementX-Powered-By: Elves

X-Recruitng: Like HTTP headers? Come write ours: booking.com/jobsX-Recruiting: If you’re reading this, maybe you should be working at Zappos instead. Check out jobs.zappos.com

BEZPIECZEŃSTWO

- autoryzacja BASIC i DIGEST- protokół SSL- DNT (Do Not Track)- HSPS- Same Origin Policy + CORS

Autoryzacja BASIC

BEZPIECZEŃSTWO

Serwer:WWW-Authenticate: Basic realm="you shall not pass!"

Klient:Authorization: Basic QWxhZGluOnNlc2FtIG9wZW4=

Autoryzacja DIGEST

BEZPIECZEŃSTWO

SERWER:WWW-Authenticate: Digest realm="testrealm@host.com",qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",opaque="5ccc069c403ebaf9f0171e9517f40e41"

KLIENT:Authorization: Digest username="Mufasa",realm="testrealm@host.com",nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",uri="/dir/index.html", qop=auth, nc=00000001, cnonce="0a4f113b",response="6629fae49393a05397450978507c4ef1",opaque="5ccc069c403ebaf9f0171e9517f40e41"

Protokół SSL

BEZPIECZEŃSTWO

HSTS – HTTP Strict Transport Security

BEZPIECZEŃSTWO

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

ALE:- nagłówek ten musi zostać przesłany poprzez HTTPS z zaufanym certyfikatem inaczej MUSI zostać zignorowany!

- działa wszędzie już od dawna Firefox, Chrome, Opera... tylko nie w Internet Explorerze!

DNT: Do Not Track

BEZPIECZEŃSTWO

DNT: 1

Obsługiwany przez WSZYSTKIE przeglądarki!

Użytkownik ŚWIADOMIE musi zaznaczyć iż nie chce być śledzony.

Internet Explorer 10 łamie tą zasadę, wysyła DNT domyślnie!

CORS: Cross Origin Resource Sharing

BEZPIECZEŃSTWO

Pomaga w problemach z regułą Same Origin Policy w wywołaniach XHR:

Klient:Origin: http://www.serwer.com

Serwer:Access-Control-Allow-Origin: http://serwer.com/

CORS: Cross Origin Resource Sharing

BEZPIECZEŃSTWO

Domyślnie nie są przesyłane informacje uwierzytelniające (ciasteczka, autoryzacja, certyfikaty SSL)

Access-Control-Allow-Credentials: true

W Internet Explorer z CORS korzystamy poprzez obiekt XDomainRequest. IE nie daje JAKIEJKOLWIEK możliwości przesyłania informacji uwierzytelniających.

WYDAJNOŚĆ

- Keep-Alive- Wiele połączeń równolegle- Cache- Pobieranie fragmentów plików- HTLS

- SPDY

Keep-Alive, wiele połączeń równolegle

WYDAJNOŚĆ

Connection: close

Connection: keep-alive

Wiele połączeń TCP jednocześnie!

Trik: Ajax - Long-Pooling!

Cache

WYDAJNOŚĆ

Cache-control: public, private, no-cache, no-store, max-age, must-revalidate, proxy-revalidate

ETag: "686897696a7c876b7e"If-None-Match: "686897696a7c876b7e"304 Not Modified

Nagłówek ETag może zostać wykorzystany do śledzenia użytkownika!

Pobieranie fragmentów plików

WYDAJNOŚĆ

Serwer:Accept-Ranges: bytes

Klient:Range: początek-koniec

Serwer:Content-Range: początek-koniec/ogółem

206 Partial Content416 Request Range Not Satisfiable

HTLS – HTTP Live Streaming

WYDAJNOŚĆ

Technologia opracowana przez Applei zaimplementowana w QuickTime oraz iPhone.

Plik do przesłania dzielony jest na wiele małychczęści.

Części te przesyłane są na samym początku transmisji w pliku m3u8.

SPDY

WYDAJNOŚĆ

SPDY

WYDAJNOŚĆ

- maksymalne wykorzystania połączenia TCP- połączenie szyfrowane- całość połączenia jest kompresowana- jednym połączeniem przesyłanych jest wiele zasobów jednocześnie- priorytety- server push- server hint

SPDY

WYDAJNOŚĆ

Zmniejszenie ruchu wychodzącego o 40%

Wzrost wydajności od 30% do 55%

Użycie mniejszej ilości połączeń TCP

Internet Explorer... jak zwykle...

Opera, Chrome, Firefox... też mobilne!

WebDAV – Web Distributed Authoring & Versioning

POZA PRZEGLĄDARKĄ

Nowe komendy:- PROPFIND- PROPPATCH- MKCOL- COPY- MOVE- LOCK- UNLOCK

WebDAV – Web Distributed Authoring & Versioning

POZA PRZEGLĄDARKĄ

Daje możliwości praktycznie pełnego systemu plików poprzez protokół HTTP!

W Microsoft Windows już od wersji 98 jako Web Folders.

W systemach Linux czy Mac OSX możliwe jest podmontowanie zasobów WebDAV.

Wykorzystywany przez SVN.

Web Services

POZA PRZEGLĄDARKĄ

Usługi świadczone poprzez sieć, zazwyczaj korzystając z protokołu HTTP.

Często zdefiniowane za pomocą języka opisu usługi (WSDL)

Najpopularniejsze metody wykorzystania:- SOAP - simple object access protocol- XML-RPC - XML Remote Procedure Call

LINUX

PRZYKŁADY

# wget http://www.horde-technology.pl

# curl http://www.horde-technology.pl

PHP

PRZYKŁADY

$request = "GET {$path} HTTP/1.1\r\nHost: {$host}\r\n\r\n";

$f = fsockopen($host, 80, $errno, $errstr, 30);

fwrite($f, $requestData);

while (!feof($f)) { echo fgets($f, 128);}

fclose($f);

BASH

PRZYKŁADY

#!/bin/bash

exec 5<>/dev/tcp/www.horde-technology.pl/80

cat <&5 &

printf "GET / HTTP/1.0\r\n\r\n" >&5

SPDY w NODE.js

PRZYKŁADY

npm install spdy

var spdy = require('spdy'), Options = {};

var server = spdy.createServer(options, app);

server.listen(443);

http://www.horde-technology.pl

dziękujemy