cookies och websockets

39
Cookies och Websockets 31:a januari 2011

Upload: daniel-stenberg

Post on 19-May-2015

3.294 views

Category:

Technology


0 download

DESCRIPTION

Slides from my presentation at the OWASP Sweden event at January 31st 2011 in Stockholm.Slides in Swedish.

TRANSCRIPT

Page 1: Cookies och Websockets

Cookies ochWebsockets

31:a januari 2011

Page 2: Cookies och Websockets

Daniel Stenberg

Email: [email protected]: @bagderWeb: daniel.haxx.seBlog: daniel.haxx.se/blog

● Free Software● Network hacker● Embedded developer● Consultant

Page 3: Cookies och Websockets

att snacka om

● och vad vet jag då● IETF● HTTP● cookies● Websockets

Page 4: Cookies och Websockets

Frågor?

● avbryt!● kommentera!● påpeka!

Page 5: Cookies och Websockets

nät och protokoll

● skapade curl och är maintainer● leder projekten c­ares och libssh2● deltar inom IETFs arbetsgrupper 

bland annat HTTPbis, ftpext2, httpstate och hybi

Page 6: Cookies och Websockets

IETF

● “löst sammansatt organisation som arrangerar diskussioner och överenskommelser om den teknik som skall användas på Internet” (Wikipedia)

● “rough consensus and running code”● grundades 1986● RFCer

Page 7: Cookies och Websockets

HTTP

Page 8: Cookies och Websockets

HTTPbis

● startade 2007● uppdaterar RFC2616, tar in errata, tar 

bort saker saker som inte funkar eller aldrig använts

● hitta inte på något nytt! det är fortfarande HTTP 1.1

● klargör svåra avsnitt● 2010 lades HTTP authentication till

Page 9: Cookies och Websockets

Cookies

Page 10: Cookies och Websockets

http­state

● inspirerat av HTTPbis­gruppens jobb

● dokumentera hur cookies används

● Existerande specar obsoletas● överväg nyheter som kommit 

utanför specar

Page 11: Cookies och Websockets

historia

● Uppfanns av Lou Montulli (Lynx och sedan Netscape) i början av 90­talet

● (även blink­taggen!)

Page 12: Cookies och Websockets

Netscape­”specen”

● 1994● stora luckor● inte HTTP­mässigt● problem med charset● klantig datum/expire­hantering● domain­attribut med problem

Page 13: Cookies och Websockets

Efter Netscape­specen

Andra följde efter

Page 14: Cookies och Websockets

RFC 2109, första försöket

● 1997● baserat på Netscapes format● Max­Age= istället för expires● Version=1● Comment=comment

Page 15: Cookies och Websockets

RFC 2109

Ingen implementerade

Page 16: Cookies och Websockets

RFC2965, andra försöket

● år 2000● ersätter RFC2109● Set­Cookie2:● Discard● Port=

Page 17: Cookies och Websockets

RFC 2965

Ingen implementerade

Page 18: Cookies och Websockets

Nu ­ det tredje försöket

● Baserat på Netscape­specen

● Lägg till Max­Age och HTTPonly

● Browser­vendors ombord

● Inkluderar saker som ordningssortering, hur man parsar datum och hur långa cookies får vara.

● Har inte löst TLD­domain­problemet

● Hur gör de flesta?

● Testa

● Dokumentera

Page 19: Cookies och Websockets

RFC xxxx

Kommer det att funka nu?

Page 20: Cookies och Websockets

Cookie RFC på riktigt

● Därför att det inte är något nytt● Därför att alla redan nästan gör 

såhär● Därför att form+cookie auth är 

en dominerande login­teknik på webben

Page 21: Cookies och Websockets

WebSockets

Page 22: Cookies och Websockets

Bidirektionell eller server­initierad HTTP

● Traditionellt löst med long­polling eller AJAX

● WHATWGs arbete med HTML5 introducerade konceptet

● WHATWG lämnade över protokoll­delen till IETF i mars 2009 

● Det där med server­initierad...

Page 23: Cookies och Websockets

Passar bra i tiden

● Maj 2010● November 2010● Idag

Page 24: Cookies och Websockets

Politiken kunde börja

● WHATWG är inte en standard­ organisation

● IETF är väldigt annorlunda än WHATWG

● En bestämmer vs konsensus● Browser­vendors­klubb vs alla 

som vill vara med

Page 25: Cookies och Websockets

Requirement document

● Vad ska Hybi / WebSockets egentligen klara av?

● Dokumentet har aldrig blivit till något som används

● WebSockets är ett meddelande­baserat protokoll för bidirektionell trafik över TCP

Page 26: Cookies och Websockets

API + protokoll

● WebSockets är att javascript­API enligt HTML5

● WebSockets är ett TCP­baserat protokoll

Page 27: Cookies och Websockets

Diskussionspunkter

● text och/eller binärt

● HTTP compliance

● längd­fält eller start­stop

● fixed­length längd­fält eller variabelt

● storlek på fixed­length fält

● hur hantera extensions

● hur undvika cross­protocol attacker

● HTTP upgrade, CONNECT eller annat

● egen port eller port 80 / 443

● Masking eller inte

● Vilken sorts masking: XOR, HMAC eller AES 

Page 28: Cookies och Websockets

Webbläsare

● Chrome och Safari skeppar ­00● Firefox och Opera disablade pga 

säkerhet● IE är inte med på tåget● Alla vill se WebSockets skeppat

Page 29: Cookies och Websockets

­04 + spekulationer

Page 30: Cookies och Websockets

HTTP handskakning

OPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=

Page 31: Cookies och Websockets

HTTP handskakning

OPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=

Page 32: Cookies och Websockets

HTTP handskakning

OPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=

Page 33: Cookies och Websockets

HTTP handskakning

OPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=

Page 34: Cookies och Websockets

WebSockets frames

● små storlekar == litet längdfält

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-------+-+-------------+-------------------------------+ |F|R|R|R| opcode|R| Payload len | Extended payload length | |I|S|S|S| (4) |S| (7) | (16/63) | |N|V|V|V| |V| | (if payload len==126/127) | | |1|2|3| |4| | | +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + | Extended payload length continued, if payload len == 127 | + - - - - - - - - - - - - - - - +-------------------------------+ | | Extension data | +-------------------------------+ - - - - - - - - - - - - - - - + : : +---------------------------------------------------------------+ : Application data : +---------------------------------------------------------------+

Page 35: Cookies och Websockets

Client masking

● The client MUST mask all frames sent to the server.

● Omaskerat från servern● Syftet är att undvika cross­

protocol attacker och cache­poisoning

Page 36: Cookies och Websockets

Maskering == XOR32 bit nyckel

längd

XORad data

Page 37: Cookies och Websockets

Websockets kommer

● Alla vill se Websockets hända● ­76/­00 ­problemen kanske var 

bra!● Starka viljor● Till sommaren 2011? Hösten?

Page 38: Cookies och Websockets

Summering

● Cookie RFC inom kort● Websockets lite längre bort

Page 39: Cookies och Websockets

Tack för mig!